Я хочу прочитать строку из терминала и сохранить ее в 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);
}