S
S
sddvxd2018-06-24 18:18:35
C++ / C#
sddvxd, 2018-06-24 18:18:35

How to display Cyrillic from a variable in MessageBoxW?

Good afternoon

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);
      }
  }

garbage is displayed instead of Cyrillic

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexander Taratin, 2018-06-25
@sddvxd

An example of reading a Cyrillic file into a string variable under 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();

headlines
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <locale>
#include <codecvt>
#include <conio.h>

R
res2001, 2018-06-24
@res2001

Apparently it is necessary to save the source in UTF8.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question