使用 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;
我有一个包含文本的文件,我想将该文件中的每一行都放入 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;