Чтение не-ASCII символа UTF-8 приводит к символу NUL - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу прочитать строку из терминала и сохранить ее в std :: string как UTF-8.

При написании таких символов, как áéíóú ( которые занимают 2 байта) они читаются как один символ NUL.

Я пробовал этот код в среде Linux (без вещей SetConsoleCP, очевидно) и он работает, так что мне нужно сделать, чтобы заставить его работать в Windows?

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

void PrintStringByChar(const std::string& str) {
    for (int i = 0; i < str.size(); i++) {
        int x = str[i];
        std::cout << "[" << x << "]" << std::endl;
    }
}

int main() {
    SetConsoleOutputCP(CP_UTF8);
    SetConsoleCP(CP_UTF8);

    std::cout << "Write: ";
    std::string text;
    std::getline(std::cin, text);
    PrintStringByChar(text);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...