Re: fstream и unicode
От: Sharpeye Россия  
Дата: 03.08.09 10:42
Оценка:
Здравствуйте, pick_catcher, Вы писали:

_>Господа, помогите, я столкнулся с проблемой.


_>Надо в файл скинуть бинарные данные.

_>Имя файла в широких символах.

_>#include <fstream>

_>#include <tchar.h>

_>...


_>std::wfstream wfile(_T("мой файл"), std::ios_base::out | std::ios_base::binary);

_>if(wfile.is_open())
_>{

_> std::string strEng = "bingo";

_> wfile.write(reinterpret_cast<const wchar_t*>(strEng.c_str()), strEng.length());
_> wfile.flush();
_>}
_>wfile.close();

_>Естественно, ничего и не записывает из-за неправильного приведения типов.

_>Размер нужно указывать, как количество двухбайтных символов wchar_t, а надо
_>записать допустим 5 байт (строка char символов).
_>Что делать? (желательно, без локалей)

Если для Visual Studio, то там есть перегрузка конструктора fstream для широких символов

    std::fstream file( L"мой файл", std::ios_base::out | std::ios_base::binary );

    if( file )
    {
        std::string str = "bingo";
        file.write( str.c_str(), str.length() );
        file.flush();
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.