自从我开始编程并决定学习 c++ 以来,我一直在使用 Java。我用 Java 写的内容是这样的:
showMessage("Hello world" + randomNumber);
它显示文本+整数或浮点数或其他。但它不会在 c++ 中工作。xCode 的错误消息:Invalid operands to binary expression ('const char *' and 'float')
干杯!
你可以sprintf
按照安东做一个,或者更多c++
:
std::stringstream ss;
ss << "Hello, world " << randomNumber;
showmessage(ss.str());
(sprintf 没有任何问题,特别是如果你使用它snprintf
)。
ostringstream os;
os<<"HelloWorld"<<randomnumber;
string s;
s = os.str();
string s 现在包含您想要作为字符串对象的字符串。
您还可以使用boost::lexical_cast将数字转换为字符串,这是大多数情况下最快的方法:
showMessage("Hello world" + boost::lexical_cast<std::string>(randomNumber));
showMessage 声明是
void showMessage(cosnt std::string& message)
考虑添加一个能够将多种类型转换为 std::string 的新函数:
template<typename ty>
string to_str(ty t)
{
stringstream ss; ss << t;
return ss.str();
}
用法:
"Hello World " + to_str(123)
我不确定 c 风格的答案是否合适,但我已经在 cocos2d-x 问题中回答了它。
定义一个类S
。然后写
showMessage( S() << "Hello world" << randomNumber );
我已经S
为 SO 编写了太多次类,创建它是一个很好的练习,因此,不提供源代码。
请注意,您可以合理地调用它StringWriter
或类似的名称,然后typedef
在函数调用中使用更简洁的代码。
使用 C++11:
showMessage("Hello world" + std::to_string(randomNumber));
在 C++ 中,连接字符串和原语的标准方法是使用stringstream
. 它实现了与 Java 相同的功能(还有更多功能)StringBuilder
(当然它的 API 不同)。但是,如果您使用起来很舒服,cout
那么您应该没问题。
例如。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main () {
stringstream ss;
ss << "Some string - " << 124; // build string
string str = ss.str(); // extract string
cout << str << endl;
return 0;
}
字符串流快速参考http://www.cplusplus.com/reference/iostream/stringstream/stringstream/
您应该改为打印到 char* 中。
你可以做类似的事情
char* tempBuffer = new char[256];
sprintf_s(tempBuffer, 256, "Hello world %d", randomNumber);
showMessage(tempBuffer);