自从我开始编程并决定学习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问题中回答了它。

尝试使用整数设置一个cclabelttf,作为它在cocos2d-x c ++中的字符串的一部分

与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/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top