使用 wstring 获取行读取文件

use wstring get line read file

我有一个包含文本的文件,我想将该文件中的每一行都放入 std::wstring variable.If 我这样做时出现错误,所以是否可以使用 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 我没有错误。

尝试使用 std::wifstream 而不是 std::ifstream

要使用 wstring 读取文件,我发现 wifstream 工作得很好,即使在 visual studio 调试器中也能正确显示 UTF-8 字词(我正在阅读繁体中文),来自 this answer:

#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;