![](/img/trans.png)
[英]C++ Int to String by using ostringstream or stringstream
[英]C++ std::stringstream/ostringstream and UTF characters
我正在編寫一個處理某些數據的程序,將其輸出到.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() );
其中ofs
寫入的ofstream
文件的內容正確包含UTF字符,但是stringstream創建的字符串fileName
和ostringstream
創建的文件名(即使沒有使用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.