#include <windows.h>
#include <iostream>
#include <string>
#include <fstream>
#define UNICODE
#define _UNICODE
int main()
{
//ANSI
std::string s1("englisch русский");
MessageBoxA(0,s1.c_str(),0,0);
std::ofstream f1;
f1.open( "test1.txt", std::ios::trunc );
f1 << s1;
f1.close();
//UNICODE
std::wstring s2(L"englisch русский");
MessageBoxW(0,s2.c_str(),0,0);
std::wofstream f2;
f2.open( "test2.txt", std::ios::trunc );
f2 << s2;
f2.close();
FILE *f3;
f3 = fopen("test3.txt", "w");
fwrite( s2.c_str(), sizeof(wchar_t), s2.length(), f3 );
fclose( f3 );
return 0;;
};
Unicode в файл = проблемы
У меня проблемы с выводом UNICODE строк в файл средствами STL есть такой вот код
Код:
в файлах test1.txt и test3.txt все нормально с английцким и русским, в первом ANSI строки во втором UNICODE а вот с файлом test2.txt проблемы, там строка englisch вывелась как ANSI а вот остальное что русским, каракули. Хотя MessageBoxW(0,s2.c_str(),0,0); показывает то что надо. Как мне вывести русскицй текст который хранится в std::wstring c помощью ofstream/wofstream. Использовал библу <iostream> из VS6 и STLpotr, один фиг ни там ни там не работает :(.
Никак. Нада перегрузить << как в 3-ем примере через fwrite()А в начале файла вывести 2 байта - FF i FE - стандартный заголовок unicode(UTF-16, little-endian).