madf: (Default)
2008-02-24 11:44 pm
Entry tags:

Выделение памяти

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

codecvt

Итак, встала тривиальная задача: преобразовать строку из многобайтной в "широкую" и обратно.
madf: (Default)
2008-02-16 08:54 pm
Entry tags:

std::wstring, std::wcout

Итак, std::wstring нужен только для корректного разбиения строки в многобайтной кодировке на символы. Для вывода таких строк не подходят стандартные потоки. Но в пространстве имен std определены и потоки для работы с "широкими" строками, например, std::wcout.
Вчера наткнулся на 2 особенности работы этих потоков.