Ввод нелатинских символов с wcin производит символ '/ 0' - PullRequest
0 голосов
/ 07 августа 2020
#include <iostream>
#include <iomanip>

constexpr int SIZE=20;

int main()
{
    wchar_t input[SIZE+1];
    std::wcin >> input;

    input[SIZE] = '\0';
    
    wchar_t c;
    for(int i=0; i<SIZE; ++i)
    {
        c=input[i];
        std::cout << std::setw(4) << std::hex << +c << ' ';
    }
}

С этим кодом, если я введу какие-либо нелатинские символы, я увижу 0 в их позиции. Например, если я ввожу ФФFF, я получаю

   0    0   46   46    0   40    0    0    8    0    0    0    c    0    0    0 13a0   d1    0    0

Я использую Windows 10, используя VS C и C ++ 11 в качестве компилятора, и я использую шестнадцатеричный код Юникода. набор символов (кириллицы c букв). Если я жестко закодирую символы и пропущу wcin, я получу

  424  424   46   46    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
...