簡體   English   中英

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

[英]C++ std::stringstream/ostringstream and UTF characters

我正在編寫一個處理某些數據的程序,將其輸出到.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() ); 

其中ofs寫入的ofstream文件的內容正確包含UTF字符,但是stringstream創建的字符串fileNameostringstream創建的文件名(即使沒有使用fileName創建,我測試過它)也會錯誤地顯示字符。

例:

它應該是什么 - CDFvsRd圖#32 - MWIR @ 300m,無太陽,30kts,θ=全°.csv
結果如何 - CDFvsRd Graph#32 - MWIR @ 300m,no-sun,30kts,Ï=allË.csv

我可以用盡可能多的標准C ++來解決這個問題嗎? 將我的fileName字符串轉換為wstring幫助?

解決方案是編寫代碼的Windows部分,以便在沒有圖形標題的情況下導出文件名,省略文件名中的UTF-8字符。 這不是一個真正的解決方案,只是一種解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM