Я компилирую свою библиотеку с поддержкой unicode, и теперь у меня возникла проблема в том, что мне нужно открыть файл данных, который находится в ASCII, но, конечно, имя файла с widechars. Итак, как бы я это сделал?Открытие входного потока с именем юникода, но данные ASCII
Когда я использую этот код:
std::wstring s = L"path";
std::ifstream fl;
fl.open(s.c_str(), std::fstream::in);
тогда я получаю эту ошибку:
error: no matching function for call to 'std::basic_ifstream<char>::open(const wchar_t*, const openmode&)'
И когда я использую
std::wifstream fl;
fl.open(s.c_str(), std::fstream::in);
я получаю ту же ошибку (? ?)
error: no matching function for call to 'std::basic_ifstream<wchar_t>::open(const wchar_t*, const openmode&)'
Даже в этом случае, когда я буду использовать std::wifstream
, поток ожидает, что входные данные также будут в Юникоде? Если это так, тогда мне придется использовать std::ifstream
, но мне все равно нужно передать ему широкую строку или каким-то образом преобразовать ее в ASCII. Каков правильный способ сделать это?
Я использую MingW gcc 4.8.3.
mingw32-g++.exe -pedantic -std=c++11 -Wextra -Wall -g -D_UNICODE -D_WIN32 -Iinclude -c propertyfile.cpp -o propertyfile.o
Почему это было приостановлено? Является ли неправильное преобразование, или это просто из-за неправильных фигурных скобок? – Devolus
Я не знаю, это вполне законный код C++ 11. http://coliru.stacked-crooked.com/a/ab322f7b56e94c71 – galop1n
Поскольку каждый аспект ответа неверен? – Simple