我想连接字符串文字和整数,如下所示:
string message("That value should be between " + MIN_VALUE + " and " + MAX_VALUE);
但是这给了我这个错误:
error: invalid operands of types ‘const char*’ and ‘const char [6]’ to binary ‘operator+’|
这样做的正确方法是什么?我可以在2个字符串声明(每个连接一个字符串文字和一个int)中分割它,但这很难看。我也试过<<操作
由于
答案 0 :(得分:6)
你可能应该使用stringstream。
#include <sstream>
std::stringstream s;
s << "This value shoud be between " << MIN_VALUE << " and " << MAX_VALUE;
message = s.str();
答案 1 :(得分:1)
#include <sstream>
#include <string>
template <typename T>
std::string Str( const T & t ) {
std::ostringstream os;
os << t;
return os.str();
}
std::string message = "That value should be between " + Str( MIN_VALUE )
+ " and " + Str( MAX_VALUE );
答案 2 :(得分:1)
你可能想要使用这样的字符串流:
std::stringstream msgstream;
msgstream << "That value should be between " << MIN_VALUE << " and " << MAX_VALUE;
std::string message(msgstream.c_str());
答案 3 :(得分:1)
执行此操作的c ++方法是使用stringstream然后您可以使用&lt;&lt;运营商。它将为您提供更一致的代码感觉
答案 4 :(得分:1)
有很多方法可以做到这一点,但我最喜欢的是:
string message(string("That value should be between ") + MIN_VALUE + " and " + MAX_VALUE);
第一个文字周围的额外string()
在世界上有所不同,因为有一个重载的string::operator+(const char*)
会返回string
,而operator+
已经离开了 - 正确的关联性,所以整个事情变成了operator+
个电话链。