Unicode 程序中的 C++ Wofstream 问题

c++ wofstream issue in unicode program

本文关键字:Wofstream 问题 C++ 程序 Unicode      更新时间:2023-10-16

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

我可以在 C 代码中做到这一点没有问题,例如

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

当我打开文件时,一切都是正确的,但是在下面的程序中C++我得到的只是第一行,我已经尝试了locale::global(locale("));结果相同。

 wofstream MyOutputStream(L"test.txt"); 
 if(!MyOutputStream)
 {
    AfxMessageBox(L"Error opening file");
    return;
 }
    MyOutputStream << L"testrn";
    MyOutputStream << L"наказаниеrn";
    MyOutputStream << L"ウェブ全体から検索rn";
    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"testrn";
    MyOutputStream << L"наказаниеrn";
    MyOutputStream << L"ウェブ全体から検索rn";

最终有效的代码是:

  wofstream MyOutputStream(L"c:\test2.txt", ios_base::binary); 
  if(!MyOutputStream)
  {
    AfxMessageBox(L"Error opening file");
    return;
  }
    wchar_t buffer1[128];  
    MyOutputStream.rdbuf()->pubsetbuf(buffer1, 128); 
    MyOutputStream << L"testrn";
    MyOutputStream << L"наказаниеrn";
    MyOutputStream << L"ウェブ全体から検索rn";
    MyOutputStream.close();