我正在编写一个处理某些数据的程序,将其输出到.csv文件,然后编写GNUplot脚本,并调用GNUplot来执行脚本并创建一个具有相同名称的图像文件(只有不同的扩展名) 。文件名包含UTF字符(我相信是UTF-8?),例如°,φ和θ。当我使用g ++ 4.4.7在Linux中编译和执行它时,所有这一切都完美无缺。然后,我将我的代码更改为在Microsoft Visual Studio 2008中编译,并且在运行程序时问题就开始了。
我使用以下两位代码
打开一个流来写入文件(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() );
ofstream
写入的ofs
文件的内容正确包含UTF字符,但字符串流创建的字符串fileName
和ostringstream
创建的文件名(即使不是使用fileName
创建,我测试了它)错误地显示了字符。
示例:
应该是什么 - CDFvsRd图#32 - MWIR @ 300m,无太阳,30kts,θ=全°.csv
结果如何 - CDFvsRd图#32 - MWIR @ 300m,no-sun,30kts,Ï=allË.csv
我可以用尽可能多的标准C ++来解决这个问题吗?将我的fileName
字符串转换为wstring
有用吗?
答案 0 :(得分:1)
解决方案是编写代码的Windows部分,以便在没有图表标题的情况下导出文件名,省略文件名中的UTF-8字符。这不是一个真正的解决方案,只是一种解决方法。