utf8 std::string в std::wstring
От: Demetry  
Дата: 01.04.12 15:05
Оценка:
Здравствуйте!

Подскажите как перекодировать 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.