C++ std :: stringstream/ostringstream和UTF字符

pav*_*che 5 c++ stringstream utf-8 ostringstream ofstream

我正在编写一个处理某些数据的程序,将其输出到.csv文件,然后编写GNUplot脚本,并调用GNUplot来执行脚本并创建一个具有相同名称的图像文件(只有不同​​的扩展名).文件名包含UTF字符(我相信是UTF-8?),例如°,φ和θ.当我使用g ++ 4.4.7在Linux中编译和执行它时,所有这一切都完美无缺.然后我改变了我的代码以在Microsoft Visual Studio 2008中编译,并且在运行程序时问题就开始了.

我使用以下两位代码

  1. 制作标准文件名字符串(我只为其添加各种文件的扩展名)
  2. 打开一个流来写入文件(GNUplot脚本和.csv文件之间的唯一区别是扩展名

    // Generate a file name string
    stringstream ss;
    ss << type << " Graph #" << gID << " - " << title;
    string fileName = ss.str();
    
    // Open a stream for the output file
    ostringstream outfile;
    outfile << fileName << ".gplt" << ends;
    ofstream ofs( outfile.str().c_str() );
    
    Run Code Online (Sandbox Code Playgroud)

写入包含正确UTF字符的ofstream文件的内容ofs,但是stringstream创建的字符串fileNameostringstream创建的文件名(即使没有创建fileName,我测试它)显示字符不正确.

例:

应该是什么 - CDFvsRd图#32 - MWIR @ 300m,无太阳,30kts,θ=全°.csv
最终结果如何 - CDFvsRd图#32 - MWIR @ 300m,无太阳,30kts,Ï=全部的.csv

我可以用尽可能多的标准C++来解决这个问题吗?将我的fileName字符串转换为wstring帮助?

pav*_*che 1

解决方案是编写代码的 Windows 部分,以不导出没有图形标题的文件名,并从文件名中省略 UTF-8 字符。这不是真正的解决方案,只是一种解决方法。