我想要做這樣的事情(顯示FPS IM在我的SDL遊戲運行的是什麼):如何添加一個數字到字符串?
SDL_WM_SetCaption("FPS: " + GetTicks(&fps)/1000.f, NULL);
但Visual Studio中intellisens抱怨表達式必須具有整數或枚舉類型。
我做錯了什麼?
我想要做這樣的事情(顯示FPS IM在我的SDL遊戲運行的是什麼):如何添加一個數字到字符串?
SDL_WM_SetCaption("FPS: " + GetTicks(&fps)/1000.f, NULL);
但Visual Studio中intellisens抱怨表達式必須具有整數或枚舉類型。
我做錯了什麼?
如果這真的是C++,請考慮流;
std::ostringstream str;
str << "FPS: " << GetTicks(&fps)/1000.;
SDL_WM_SetCaption(str.str().c_str(), NULL);
C不支持將簡單類型(如int
或float
)轉換爲更復雜的類型(如字符串)。
您應該檢查sprintf
功能:
char buffer[64];
sprintf("FPS: %f", GetTicks(&fps)/1000.f);
SDL_WM_SetCaption(buffer, NULL);
這是一個C++問題,而不是一個C(編輯:我意識到這個問題已經編輯) –
在C語言中,你可以使用sprintf
做到這一點。
退房此鏈接:
http://msdn.microsoft.com/en-us/library/ybk95axf(v=vs.71).aspx
不要使用+
添加字符指針(這是他們在C什麼,而不是字符串)。
編輯:
如果這是C++,按照編輯,使用std::string
,其具有操作者+
重載。您仍然需要將數字轉換爲字符串。
另外,它被稱爲級聯。
您可以使用字符串,或者如果你已經解決了當前新的C++標準,也有std::to_string
:
#include <string>
#include <iostream>
int main() {
const std::string str = "Foobar " + std::to_string(42);
std::cout << str << '\n';
}
如果它的C++,你應該看'的std :: string'。 – jv42
刪除了SDL標記:此問題與C++中的字符串格式有關,而與SDL無關。 –