Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Unicode в файл = проблемы

1.9K
10 января 2006 года
HEvgA
49 / / 16.09.2004
Привет всем. С прошедшим.
У меня проблемы с выводом UNICODE строк в файл средствами STL есть такой вот код
Код:
#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;;
};


в файлах 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, один фиг ни там ни там не работает :(.
398
10 января 2006 года
Alexandoros
630 / / 21.10.2005
Никак. Нада перегрузить << как в 3-ем примере через fwrite()А в начале файла вывести 2 байта - FF i FE - стандартный заголовок unicode(UTF-16, little-endian).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог