我有用戶提供的格式字串(例如“%.2f”)和一個 QVariant 型別,我試圖將它們組合起來輸出到(格式化的)字串中。
我已經走上了使用 QString::asprintf(const char *cformat, ...) 的道路來實作這一點,我將提供適當的轉換資料型別,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toUInt());
這在大多數情況下都很好,特別是當我有一個浮點作為輸入時。但是,如果我在這個特定整數(.toUInt()) 轉換案例中的格式字串包括十進制格式(例如“%.2f”),那么我會得到“0.00”的常量結果。這讓我大吃一驚,因為我原以為只是將“.00”附加到整數上,正如我在其他語言(如 Perl)中看到的那樣。
我在這里缺少什么?另外,我知道 asprintf() 是最近添加的,并且檔案現在已經建議使用 QTextStream 或 arg() 代替。但是,我不相信這是一個選項,我可以使用這種格式的字串。謝謝。
uj5u.com熱心網友回復:
格式字串需要一個double,但您提供的是int. 如果您提供實際的雙精度,它會起作用,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toDouble());
另請注意,此行為與標準 C 庫函式的作業方式(std::sprintf等)相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313887.html
