2015-05-05 37 views
0

新手在這裏。
我想追加一個雙爲QString這樣的形式,它的結果顯示
12.34 to 012.34
所以,如果我有這兩個變量 double num = 12.34; QString str = "literal "; 我想數追加到字符串,以便它導致 literal 012.34轉換和格式化到QString

編輯: 格式需要xxx.xx三位小數前和後兩位,總是。這是一個需求。我大概可以簡單地在數字前追加零,然後我需要檢查一下是否小於100,我不認爲這是最好的方式,我可能是錯的。

我正在模擬某種氣候室。雙數字表示溫度結果在-40到150之間變化,我會將構造的字符串寫入串行設備,另一設備上的程序將期望此格式對其執行某些操作。我是Qt新手,並不擅長C++,或者有點學習,因爲我這樣做。

+0

[convert double to QString]的可能重複(http://stackoverflow.com/questions/5940846/convert-double-to-qstring) – TZHX

+2

難道你不能簡單地在字符串前加'0'。請解釋這背後的邏輯:爲什麼你需要前導'0'字符? – vahancho

+1

@vahancho我在印象之下,他可能想要一種通用的方式來格式化雙打,比如'printf'的'%3.2f'。我同意他可能需要詳細說明他想要的內容。 – dwcanillas

回答

3
QString{ "literal %1" }.arg(12.34, 6, 'g', -1, '0') 
// Returns "literal 012.34" 

這將始終爲您提供至少6個字符的輸出(5位數加小數點或6位數字)。或者:

QString{ "literal %1" }.arg(12.34, 6, 'f', 2, '0') 
// Returns "literal 012.34" 

總是會給你至少6個字符的輸出,其中小數點後面總是有兩個數字。

注意支撐構造函數調用需要C++ 11或更高版本,如果不能使用該版本的標準,則切換到使用括號。

+0

@darron添加了示例。 – cmannett85

+0

@darron C++ 11對象實例化已經轉向使用大括號來明確避免「最棘手的解析」問題。草藥解釋風格推這裏:http://herbsutter.com/2013/05/09/gotw-1-solution/ – cmannett85

+0

@達隆完成。什麼時候回答簡單的問題變得如此困難? – cmannett85

-1

UPDATE

我建議你this一個閱讀。

QString zeroString("0"); 
QString("literal %1%2").arg(zeroString).arg(12.34, 0, 'f', 2); 

但是你應該指定爲什麼要添加zeroString。

+0

這不會編譯。第二個參數不是格式char。 – simon

+0

對不起,我的錯。第二個參數是例如0. –

+0

如果你想要這個答案,爲什麼不只是'QString(「literal 0%2」).arg(12.34,0,'f',2)'? – cmannett85