@sddvxd

Как вывести кириллицу из переменной в MessageBoxW?

Добрый день

ifstream file("C:\\cpp\\permission.txt");//создаем объект потока istream  по имени file
 string str; 
  while(getline(file,str)) 
  {                      
                         std::wstring widestr = std::wstring(str.begin(), str.end());
                   

                   const wchar_t* filename = widestr.c_str();
      MessageBoxW(FindWindowW(NULL, L"Корзина"), filename, NULL, MB_YESNO);
       if(wcscmp(lpExistingFileName,filename) == 0){
        MessageBoxW(FindWindowW(NULL, L"Корзина"), filename, NULL, MB_YESNO);
      }
  }


вместо кириллицы выводится мусор
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Пример чтения файла с кириллицей в строковую переменную под 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>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Видимо надо исходник сохранить в UTF8.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы