Задать вопрос
@blecked88

Как считать из stdin русский текст и вывести его как wchar_t?

Есть вот такая программа:

#include <iostream>
#include <tchar.h>
#include <windows.h>

#define SZ 256

int main(void)
{
    setlocale(LC_ALL, "ru_RU.UTF-8");
    SetConsoleOutputCP(CP_UTF8);
    SetConsoleCP(CP_UTF8);

    TCHAR bufferW[SZ] = { 0 };
    fgetws(bufferW, SZ, stdin);

    _tprintf(L"Введенный текст: %s\n", bufferW);

    return 0;
}


Задача следующая: считать русские символы из консоли и иметь возможность оперировать ими как wchar_t, чтобы использоваться всякие приколы из винапи. Как настроить кодировки соответствующим образом? Я могу считывать и выводить и хранить char русские символы, но wchar_t не умею.

Программа выше выдает такое:

hpO1OmQ.png
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@blecked88 Автор вопроса
Проблема в итоге решилась так.

#include <stdio.h>
#include <tchar.h>
#include <io.h>
#include <fcntl.h>

#define SZ 256

int main(void)
{
    int _ = _setmode(_fileno(stdin), _O_U16TEXT);
    _ = _setmode(_fileno(stdout), _O_U16TEXT);

    TCHAR input[SZ] = { 0 };

    _tprintf(L"Введите текст: ");
    fgetws(input, SZ, stdin); input[wcslen(input) - 1] = 0;
    _tprintf(L"Введенны текст: %s", input);

    return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы