использовать wstring получить файл для чтения строки

У меня есть файл, содержащий текст, я хотел бы преобразовать каждую строку из этого файла в переменную std::wstring. Если я это сделаю, я получаю сообщение об ошибке, так можно ли использовать std::wstring или я обязан использовать std::string? Это мой код:

std::ifstream fichier( "text.txt" );

if ( fichier )
{
  std::wstring ligne;

  while ( std::getline( fichier, ligne ) )
  {
      //work with ligne
  }
}

Как уже упоминалось, если я заменю std::wstring на std::string, у меня не будет ошибок.


person simon    schedule 19.11.2015    source источник


Ответы (2)


Попробуйте использовать std::wifstream вместо std::ifstream

person Yuriy Orlov    schedule 19.11.2015

Чтобы использовать файл чтения wstring, я считаю, что wifstream работает очень хорошо, даже в отладчике Visual Studio правильно отображаются слова UTF-8 (я читаю традиционный китайский) из этот ответ:

#include <sstream>
#include <fstream>
#include <codecvt>

std::wstring readFile(const char* filename)
{
    std::wifstream wif(filename);
    wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
    std::wstringstream wss;
    wss << wif.rdbuf();
    return wss.str();
}

//  usage
std::wstring wstr2;
wstr2 = readFile("C:\\yourUtf8File.txt");
wcout << wstr2;
person yu yang Jian    schedule 15.04.2021