在c ++中使用fstream读写UTF16文件

时间:2014-05-09 07:34:35

标签: c++ fstream

我不熟悉c ++流的东西。所以我练习流输入,输出。 当然,fstream也是如此。

读取和写入基于mutibyte字符编码的文件并不是问题,但是 当像utf16这样广泛的角色时,我陷入了困境。

这是我的代码和测试文件。

vector<wstring> strings;
wifstream ifs(L"inputtxt/utf16.txt", std::wifstream::binary | std::wifstream::in);
wchar_t buff[1024] = {0,};
while (!ifs.fail()){
  ifs.getline(buff, 1024);
  wstring str(buff);
  strings.push_back(str);
}
ifs.close();

wofstream ofs(L"outputtxt/utf16.txt", std::wofstream::out | std::wifstream::binary);
vector<wstring>::iterator it = strings.begin();
for (; it != strings.end(); it++ ) {
  ofs.write(it->c_str(), it->length());
  ofs.put(L'\n');
}
ofs.close();

这是以utf16编码的测试文件。

what are you doing? 
what are you doing? 

有什么问题?我该如何正确地做到这一点?

请给我一个提示。感谢。

0 个答案:

没有答案