Ответы пользователя по тегу C++
  • WideCharToMultiByte msvc 2012 bug?

    ::WideCharToMultiByte(codePage, 0, wstr, -1, str, length, NULL, NULL);
    
    Небольшая поправка: размер целевого буфера должен быть не length, а length+1 (ведь именно столько памяти выделено), тогда не придётся вставлять завершающий ноль вручную, функция сделает это сама.

    Что касается проблемы, я не понял, при чём тут UTF-8. Конвертируется-то не в UTF-8 (CP_UTF8), а в ANSI (CP_ACP). И в отладчике Студии отображается ANSI. Только в 2012 этот ANSI из другой кодовой страницы. То есть, судя по всему, имеет место баг отладчика Студии. Если раскрыть строку и рассмотреть её посимвольно, то будет видно, что коды символов в обоих случаях одинаковые. Просто 2010 для отображения этих кодов в виде строки использует одну кодовую страницу (русскую, 1251), а 2012 — другую (1252, западную).
    Ответ написан
    2 комментария
  • Возможна ли инициализация const-строки не в конструкторе?

    Не совсем понятно, почему константным должен стать указатель, если хочется запретить менять записанные по нему данные, а не его самого. То ли неточность в описании, то ли хотел сказать не unsigned char* const, а const unsigned char*. Но независимо от этого, атрибут const можно обойти модификатором const_cast (или банальным Си-подобным приведением типа). Главное при этом, чтобы приводимая память не оказалась в read-only области, но если она явно выделяется по new, то такого казуса, по идее, произойти не должно.
    Ответ написан