Форум программистов, компьютерный форум CyberForum.ru

Загрузка UTF-8 без BOM в std::wstring - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.04.2013, 12:28     Загрузка UTF-8 без BOM в std::wstring #1
Есть файл в UTF-8 без BOM. Как его лучше загрузить целиком в std::wstring?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//=====================================================================================================================================================================================================
#include "salary.hpp"
//=====================================================================================================================================================================================================
std::wstring                  Load                        (std::string            FileName    ,
                                                              std::wofstream        &Log         )
{
 std::wifstream File;
 std::wstring Result=L"";
 Log<<L"<LoadXML>"<<std::endl;
 File.open(FileName.c_str());
 File>>std::noskipws;
 std::copy(std::istreambuf_iterator<wchar_t>(XMLFile), std::istreambuf_iterator<wchar_t>(), std::back_inserter(Result));
 return Result;
}
//=====================================================================================================================================================================================================
грузит бредятину, обнаружил, выведя две std::wstring с помощью TextOutW: загруженную с файла и присвоенную
C++
1
s=L"текст"
, они должны были полностью совпадать. Причём, латиница грузится правильно, проблема с кириллицей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 12:28     Загрузка UTF-8 без BOM в std::wstring
Посмотрите здесь:

Считать с потока строку в std::wstring C++
std::string -> std::wstring C++
C++ Как вывести std::wstring в поток?
C++ Как грамотно сконвертировать float в std::wstring?
C++ Можно ли читать UTF8 в std::wstring потоком?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.04.2013, 13:03     Загрузка UTF-8 без BOM в std::wstring #2
taras atavin, Поставить правильную локаль на потоке например.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.05.2013, 05:32  [ТС]     Загрузка UTF-8 без BOM в std::wstring #3
А как?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.05.2013, 17:36     Загрузка UTF-8 без BOM в std::wstring #4
C++
1
File.imbue(локаль);
http://en.cppreference.com/w/cpp/io/basic_ios/imbue
http://en.cppreference.com/w/cpp/locale/codecvt_utf8
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.05.2013, 19:04  [ТС]     Загрузка UTF-8 без BOM в std::wstring #5
Цитата Сообщение от ForEveR Посмотреть сообщение
File.imbue(локаль);
пробовал, аварийное завершение.
Yandex
Объявления
01.05.2013, 19:04     Загрузка UTF-8 без BOM в std::wstring
Ответ Создать тему
Опции темы

Текущее время: 04:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru