0

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

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 中建议的操作,包括 无法将 std::wstring 写入 wofstream 但是我没有帮助。先感谢您

4

2 回答 2

1

I think you will be better using directly the wstring content.

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.
于 2012-08-14T20:42:42.210 回答
1

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

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

于 2012-08-14T20:36:04.380 回答