Здравствуйте!
Подскажите как перекодировать utf-8 std::string, прочитанную из файла в std::wstring?
Обнаружил в гугле следующий пример:
//ms vc++ 2010 express
std::wfstream file;
file.open(wstring(path.begin(),path.end()), wfstream::in);
if(!wfile)
return;
const codecvt_utf8<wchar_t> cvt;
const locale utf8_locale(locale::empty() , &cvt);
wfile.imbue(utf8_locale);
getline(wfile, header);
Пример отлично работает, но мне не подходит, т.к. я должен передать ссылку на std::fstream в чужую функцию.
В итоге читаю файл при помощи std::fstream и пробую аналогичный код:
//ms vc++ 2010 express
wstring result;
wstringstream wss;
const codecvt_utf8<char> cvt;
const locale utf8_locale(locale::empty() , &cvt);
wss.imbue(utf8_locale);
wss << header.c_str(); //в std::string header лежит строка прочитанная из файла.
getline(wss, result);
На выходе (в result) получаю нечитаемую строку.
Так же буду благодарен за ссылку на литературу по использованию потоков в с++03.