无法将带有俄语字符的wstring写入文件

时间:2012-08-14 20:32:56

标签: c++ linux wstring wofstream

我正在尝试用Linux编写wstrings(俄语),用以下代码编写C ++代码:

ofstream outWFile;
outWFile.open("input.tab");
outWFile<< WStringToString(w->get_form());
outWFile<<"\t";
outWFile<<WStringToString(w->get_tag());

std::string WStringToString(const std::wstring& s)
{
    std::string temp(s.length(),' ');
    std::copy(s.begin(), s.end(), temp.begin());
    return temp;
}

input.tab内容无效

我试图做stackoverflow中提出的建议,包括 Unable to write a std::wstring into wofstream 但是我没有帮助。 提前谢谢

2 个答案:

答案 0 :(得分:0)

你的转换功能有问题:它最终会弄乱代码点为128/256或更大的所有字符(取决于你的语言环境)。

改为使用wcstombs(确保使用UTF-8语言环境)。

答案 1 :(得分:0)

我认为你最好直接使用wstring内容。

outWfile.write(w->get_tag()->data(), w->get_tag()->size()*sizeof(wchar_t));
// I used data() assuming the string and wstring methods are the same?
// Anyhow, get the pointer to wstring's data here.