Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение и вывод из файла(UTF-8), Чтение и вывод из файла(UTF-8) 
:(
    Опции темы
Vigilem
  Дата 17.5.2012, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2012

Репутация: нет
Всего: нет



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

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

При cout все английские символы и цифры отображаются нормально, а вот русские, превращаются в ...неизвестную граммоту.
Заране благодарен за помощь!
PM MAIL   Вверх
bsa
Дата 17.5.2012, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



К сожалению, более или менее стандартных средств работы с utf-8 нет. Придется использовать платформозависимые API.
Как вариант, можешь попробовать функции mbstowcs() и wcstombs(), но есть у меня подозрение, что они работают с текущей кодировкой пользователя, а не utf8.
PM   Вверх
Estranged
Дата 18.5.2012, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: нет
Всего: 3



Например, так
Код

    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;

PM MAIL   Вверх
Vigilem
Дата 18.5.2012, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2012

Репутация: нет
Всего: нет



Благодарвствую! Вы очень помогли мне!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1027 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.