madf: (Default)
Не все так просто оказалос с codecvt. Конечно, страшного ничего не произошло - пределы преобразований и пределы массива назначения задавались явно. Но преобразование лажало, т.к. для массива назначения выделялось неверное количество памяти. По привычке посчитал символ-байт. В результате при преобразовании из "широкой" строки в многобайтную места не хватало и преобразование выполнялось не полностью. А при преобразовании в "широкую" - места выделялось слишком много и в строке оставался "хвост мусора". Видимо, для решения этой проблемы нужно использовать буфер фиксированного размера и циклическое преобразование, пока исходный массив не будет пройден. Но об этом - в другой раз. Сегодня уже хочется чаю и спать. А завтра - опять понедельник и трудовая неделя. Для собственных проектов времени не будет :(

codecvt

Feb. 24th, 2008 01:56 pm
madf: (Default)
Итак, встала тривиальная задача: преобразовать строку из многобайтной в "широкую" и обратно.
madf: (Default)
Итак, std::wstring нужен только для корректного разбиения строки в многобайтной кодировке на символы. Для вывода таких строк не подходят стандартные потоки. Но в пространстве имен std определены и потоки для работы с "широкими" строками, например, std::wcout.
Вчера наткнулся на 2 особенности работы этих потоков.

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 31st, 2025 03:10 pm
Powered by Dreamwidth Studios