我想做这样的事情(显示我在SDL游戏中运行的FPS):
SDL_WM_SetCaption("FPS: " + GetTicks(&fps)/1000.f, NULL);
但Visual Studio intellisens抱怨表达式必须具有整数或枚举类型。
我做错了什么?
答案 0 :(得分:7)
如果这确实是C ++,请考虑流;
std::ostringstream str;
str << "FPS: " << GetTicks(&fps)/1000.;
SDL_WM_SetCaption(str.str().c_str(), NULL);
答案 1 :(得分:5)
C不支持将简单类型(如int
或float
)转换为更复杂的类型(如字符串)。
您应该检查sprintf
功能:
char buffer[64];
sprintf("FPS: %f", GetTicks(&fps)/1000.f);
SDL_WM_SetCaption(buffer, NULL);
答案 2 :(得分:1)
在C中,您可以使用sprintf
。
点击此链接:
http://msdn.microsoft.com/en-us/library/ybk95axf(v=vs.71).aspx
不要使用+
来添加char指针(这就是它们在C中的含义,而不是字符串)。
编辑:
如果这是C ++,则根据编辑,使用std::string
运算符重载的+
。您仍然需要将数字转换为字符串。
此外,它被称为连接。
答案 3 :(得分:0)
您可以使用字符串,或者如果您已经开始使用新的当前C ++标准,那么还有std::to_string
:
#include <string>
#include <iostream>
int main() {
const std::string str = "Foobar " + std::to_string(42);
std::cout << str << '\n';
}