Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Использование wprintf для печати кириллицы


Автор: FiMa1 22.10.2007, 14:29
Добрый день, друзья!
У меня произошла небольшая заминка с использованием функции wprintf для печати UNICODE символов, в моем случае символов кириллицы. Мне необходимо вывести на экран строку символов wchar_t. Помогите, пожалуйста, разобраться.
Код
#include <iostream>
using namespace std;

int main()
{
    wchar_t str[] = L"привет";
    wprintf(L"%S", str); // печатает ?♦@♦8♦2♦5♦B♦

    return 0;
}

Только что попробовал добавить setlocale(LC_ALL,"Russian"); до объявления str - тот же результат.
setlocale(LC_CTYPE, "ru_RU.CP1251");    _wsetlocale(LC_CTYPE, L"ru_RU.CP1251"); тоже не помогли.

Нашел вот здесь http://forum.linux.by/viewtopic.php?t=7759 Помогло вот это:

Код

#include <iostream>

int main()
{
    wchar_t str[] = L"привет";
    setlocale(LC_ALL, "");
    wprintf(L"%ls", str);

    return 0;
}

Автор: vadiml 23.10.2007, 08:33
wprintf надо использовать для ucs2 (utf16)
а для utf8 -- обычный printf.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)