C++ 如何向方法中添加更多字符串
题
自从我开始编程并决定学习c++以来,我一直在使用Java。我用 Java 写的内容如下:
showMessage("Hello world" + randomNumber);
它显示文本+整数或浮点数或其他。但它在 C++ 中不起作用。xCode 的错误消息: Invalid operands to binary expression ('const char *' and 'float')
干杯!
解决方案
您可以根据Anton进行生成的,或者是更多的sprintf
:
std::stringstream ss;
ss << "Hello, world " << randomNumber;
showmessage(ss.str());
.
(Sprintf没有错,特别是如果您使用c++
而不是)。
其他提示
ostringstream os;
os<<"HelloWorld"<<randomnumber;
string s;
s = os.str();
.
字符串现在包含要作为字符串对象的字符串。
也可以使用 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)
. 定义一个类 S
. 。然后写
showMessage( S() << "Hello world" << randomNumber );
我已经编码了 S
对于SO来说,类太多次了,创建它是一个很好的练习,因此,不提供源代码。
请注意,您可以合理地调用它 StringWriter
或类似的东西,然后只需使用 typedef
在函数调用中获得更简洁的代码。
我不确定c风格的答案是否正常,但我已经在cocos2d-x问题中回答了它。
与C ++ 11:
showMessage("Hello world" + std::to_string(randomNumber));
. 你应该打印到char *。
你可以做一些像
char* tempBuffer = new char[256];
sprintf_s(tempBuffer, 256, "Hello world %d", randomNumber);
showMessage(tempBuffer);
. 在 C++ 中,连接字符串和基元的标准方法是使用 stringstream
. 。它实现了与以下相同的功能(以及更多一点) StringBuilder
在Java中(当然它的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;
}
stringstream 快速参考 http://www.cplusplus.com/reference/iostream/stringstream/stringstream/