#include <iostream>
#include <windows.h>
int main() {
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
const int BUFFER_SIZE = 12;
char buffer[BUFFER_SIZE];
std::cout << "Введите текст: ";
std::cin.getline(buffer, BUFFER_SIZE);
std::cout << "Вы ввели: " << buffer << std::endl;
return 0;
}
Хотя вообще сейчас лучше вообще использовать std::print() или fmt::print(), тк они гарантированно обязаны вывести корректно utf-8 текст, если кодировка строкового литерала такая же ([ostream.formatted.print]).
fmt это реализует через преобразование utf-8 в utf-16 и вызов функции WriteConsoleW
ввода кстати не придумали ни в fmt, ни в стандарте, поэтому тут наверное можно использовать ReadConsoleW:
но это если совсем уже заморачиваться и совсем не хочется менять окружение. Для ввода чисел думаю и обычного cin достаточно.