簡體   English   中英

如何將帶有字符串變量的字符串傳遞給C ++中的函數

[英]how do you pass in string with a string variable to a function in C++

我有一個帶有默認參數的函數,該函數在屏幕上顯示文本。 像這樣:

DrawScreenString(int, int, string, int uicolor, font);

但是,我試圖像這樣傳遞一個字符串變量“ livesRemaining”:

DrawScreenString(10, 5, "Lives  : %d ",livesRemaining, 0xF14040, NULL);
livesRemaining = 3

因此,由於該函數僅接受5個參數,因此無法編譯,因為該函數認為我正在嘗試傳遞第6個參數,卻不知道我正在嘗試將字符串添加到已存在的字符串中。 ”

這就是我想要的結果看起來像:

Live   : 3

我知道這不是正確的方法,我該怎么做? 謝謝一大堆!

如果您使用的是支持c ++ 11的編譯器,則可以使用chris提到的to_string方法( http://www.cplusplus.com/reference/string/to_string/?kw=to_string

DrawScreenString(1,5, "Lives Remaining: " + std::to_string(livesRemaining), 0xF00000, NULL).

但是,如果您的編譯器不具有to_string功能,則可以使用stringstream構造( http://www.cplusplus.com/reference/sstream/stringstream/stringstream/ )或sprintf到char緩沖區中,然后構造來自char緩沖區的字符串。 我個人不喜歡sprintf選項,因為緩沖區固定,並且如果不檢查輸入,則擔心緩沖區溢出,但這是一個選項。

編輯:示例為每個OP請求添加stringstream:

#include <sstream>
...
std::stringstream ss;
int livesRemaining = 5;
ss << "Lives remaining: " << livesRemaining;
DrawScreenString(1,5, ss.str(), 0xF00000, NULL);

您可以將字符串“ Lives:”附加到liveRemaining變量中,如下所示:

"Lives  : %d :"+Integer.toString(uicolor)

要么

"Lives  : %d :"+uicolor + ""

要么

"Lives  : %d :"+String.valueOf(uicolor)

最后,例如:

DrawScreenString(10, 5,"Lives  : %d :"+Integer.toString(uicolor), 0xF14040, NULL);
livesRemaining = 3

暫無
暫無

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

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