我在爲圖形和GUI組件工作的軟件系統中廣泛使用Qt。但是,對於大多數內部算法和數據處理而言,Qt起着較小的作用。可互換地使用std :: string和QString
我經常會遇到需要將std :: string轉換爲QString或反之亦然。我傾向於儘可能多地使用std :: string,並且在需要將字符串傳遞給類似於文件系統的Qt類時使用QString 只有。
正如我今天上午編程時,它打擊了我可能是糟糕的設計,讓std :: string和QString都散佈在我的代碼中。我應該完全切換到QString?有沒有其他人遇到這種設計選擇?
Qt提供了很多與STL相同的功能,但由於Qt不夠標準化和穩定,所以我仍然猶豫不決。
'QString'有一個'toStdString()'方法。請參閱:http://doc.trolltech.com/4.5/qstring.html#toStdString。要從'std :: string'創建'QString',你可以使用這個構造函數:http://doc.trolltech.com/4.5/qstring.html#QString-7 – yasouser 2011-06-01 18:37:57
@yasourer:是的,但那些依賴於全局設置字符編碼。這些函數來自一個庫,它從另一個庫中獲得'std :: string',它總是包含UTF-8。 – 2011-06-01 20:18:17
通過傳遞長度以及返回QString :: fromUtf8(s.c_str(),s.size())和auto buf = s,即使字符串包含嵌入的NUL,也可以改進這些函數的工作。 toUtf8();返回std :: string(buf.data(),buf.size());'。 – 2017-08-24 08:28:54