C ++如何在方法中添加更多字符串

时间:2012-09-29 10:10:10

标签: c++ xcode char cocos2d-x

自从我开始编程并决定学习c ++以来,我一直在使用Java。 我用Java写的内容是这样的:

showMessage("Hello world" + randomNumber);

它显示了文本+整数或浮点数等等。但它不适用于c ++。 xCode的错误消息:Invalid operands to binary expression ('const char *' and 'float')

干杯!

9 个答案:

答案 0 :(得分:2)

你可以根据Anton做sprintf,或者更多c++

std::stringstream ss;
ss << "Hello, world " << randomNumber;
showmessage(ss.str());

(sprintf没有任何问题,特别是如果你改用snprintf)。

答案 1 :(得分:1)

    ostringstream os;
    os<<"HelloWorld"<<randomnumber;
    string s;
    s = os.str();

string s现在包含您想要作为字符串对象的字符串。

答案 2 :(得分:1)

此外,您可以使用boost::lexical_cast将数字转换为字符串,这在大多数情况下是最快的方法:

showMessage("Hello world" + boost::lexical_cast<std::string>(randomNumber));

showMessage声明是

void showMessage(cosnt std::string& message)

答案 3 :(得分:1)

考虑添加一个能够将多种类型转换为std :: string的新函数:

template<typename ty>
string to_str(ty t)
{
   stringstream ss; ss << t;
   return ss.str();
}

用法:

"Hello World " + to_str(123)

答案 4 :(得分:0)

定义一个班级S。然后写

showMessage( S() << "Hello world" << randomNumber );

我为SO编写了S类太多次了,创建它是一个很好的练习,因此,不提供源代码。

请注意,您可以合理地将其称为StringWriter或类似的内容,然后在函数调用中使用typedef来获得更简洁的代码。

答案 5 :(得分:0)

我不确定c风格的答案是否合适,但我已经在cocos2d-x问题中回答了这个问题。

Trying to set up a CCLabelTTF with an integer as part of it's string in Cocos2d-X C++

答案 6 :(得分:0)

使用C ++ 11:

showMessage("Hello world" + std::to_string(randomNumber));

答案 7 :(得分:-1)

你应该打印到char *中。

您可以执行类似

的操作
char* tempBuffer = new char[256];

sprintf_s(tempBuffer, 256, "Hello world %d", randomNumber);

showMessage(tempBuffer);

答案 8 :(得分:-1)

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

的快速参考