在vs2008中使用unicode编译
如何使用wofstream将许多语言字符输出到C ++文件中?

我可以用C代码做到这一点,例如

 FILE *out;
 if( (out  = _wfopen( L"test.txt", L"wb" )) != NULL )
 {
     fwprintf(out,L"test\r\n");
     fwprintf(out,L"наказание\r\n");
     fwprintf(out,L"ウェブ全体から検索\r\n");
 }


当我打开文件时,这是完全正确的,但是在C ++程序下,我得到的只是第一行,并且我尝试了locale :: global(locale(“”));结果相同。

 wofstream MyOutputStream(L"test.txt");
 if(!MyOutputStream)
 {
    AfxMessageBox(L"Error opening file");
    return;
 }

    MyOutputStream << L"test\r\n";
    MyOutputStream << L"наказание\r\n";
    MyOutputStream << L"ウェブ全体から検索\r\n";

    MyOutputStream.close();


并且我尝试以相同的结果插入此:

  std::locale mylocale("");
  MyOutputStream.imbue(mylocale);

最佳答案

解决了...这是:-

    wofstream MyOutputStream(L"c:\\test2.txt", ios_base::binary);

    wchar_t buffer1[128];
    MyOutputStream.rdbuf()->pubsetbuf(buffer1, 128);
    MyOutputStream.put(0xFEFF);
    MyOutputStream << L"test\r\n";
    MyOutputStream << L"наказание\r\n";
    MyOutputStream << L"ウェブ全体から検索\r\n";

关于c++ - unicode程序中的c++ wofstream问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30900775/

10-11 05:20