Ограниченная базовая запись для ступенчатой ​​линеаризации

Решение от: http://forums.devshed.com/c-programming-42/wstring-to-string-444006.html

std::wstring wide( L"Wide" ); 
std::string str( wide.begin(), wide.end() );

// Will print no problemo!
std::cout << str << std::endl;

] Остерегайтесь того, что здесь есть no преобразование набора символов. Это просто означает, что каждый итерированный wchar_t присваивает char - усекающее преобразование. Он использует std :: string c'tor :

template< class InputIt >
basic_string( InputIt first, InputIt last,
              const Allocator& alloc = Allocator() );

Как указано в комментариях:

значения 0-127 идентичны в практически каждая кодировка, поэтому усекающие значения, которые все меньше 127, дают один и тот же текст.

-

значения 128-255 кодовой страницы Windows 1252 (по умолчанию Windows English) и значения 128-255 юникода в основном одинаковы, поэтому, если это кодовая страница, в которой вы используете большинство этих символов, должна быть усечена до правильных значений. (Я полностью ожидал, что и работаю, я знаю, что наш код на работе опирается на это для é, который я скоро исправлю)

И обратите внимание, что коды указывают в диапазоне 0x80 - 0x9F в Win1252 будет работать не . Это включает в себя , œ, ž, Ÿ, ...

0
задан R. Gholizadeh R. 17 January 2019 в 08:40
поделиться