Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Чтение и вывод из файла(UTF-8)


Автор: Vigilem 17.5.2012, 22:46
Здравствуйте!
Такой вопрос, как считать и вывести данные(есть и русские символы) из файла с кодировкой UTF-8.
Код

string s;
ifstream file_in("dataBase.txt");
file_in >> s;
cout << s <<endl;

При cout все английские символы и цифры отображаются нормально, а вот русские, превращаются в ...неизвестную граммоту.
Заране благодарен за помощь!

Автор: bsa 17.5.2012, 23:30
К сожалению, более или менее стандартных средств работы с utf-8 нет. Придется использовать платформозависимые API.
Как вариант, можешь попробовать функции mbstowcs() и wcstombs(), но есть у меня подозрение, что они работают с текущей кодировкой пользователя, а не utf8.

Автор: Estranged 18.5.2012, 00:02
Например, так
Код

    setlocale (LC_ALL, "russian_russia");
    std::ifstream file_in("dataBase.txt");
    file_in.seekg (0, std::ios_base::end);
    std::streamoff size = file_in.tellg ();
    file_in.seekg (0, std::ios_base::beg);
    char *ch = new char [size];
    file_in.read (ch, size);
    int retsize = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, ch, size, NULL, 0);
    wchar_t *ch2 = new wchar_t [retsize + 1];
    ch2 [retsize] = L'\0';
    MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, ch, size, ch2, retsize);
    std::wcout << ch2 <<std::endl;

    delete [] ch;
    delete [] ch2;

Автор: Vigilem 18.5.2012, 00:13
Благодарвствую! Вы очень помогли мне!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)