我正在尝试用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 但是我没有帮助。 提前谢谢
答案 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.