Пример чтения файла с кириллицей в строковую переменную под windows.
//Установим глобальную локаль для вывода не acsii символов в консоль и выходной wofstream
std::locale::global(std::locale(""));
//Открываем входной файл на чтение
std::wifstream wif("input.txt");
//Проверяем, что файл открылся
if (!wif.is_open()) {
std::wcout << L"Входной файл не доступен для чтения.\nНажмите любую клавишу для завершения." << std::endl;
_getch();
std::exit(1);
}
//Устанавливаем локаль для чтения не acsii символов
wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
//Создаем временный поток
std::wstringstream wss;
//Читаем входной файл во временный поток
wss << wif.rdbuf();
//Преобразуем поток в строку
std::wstring s = wss.str();
заголовочные
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <locale>
#include <codecvt>
#include <conio.h>