C ++错误 表达式必须具有整数或枚举类型 从串联的字符串中得到这个?
所以在 toString()
在C ++中的类我有代码:
string bags = "Check in " + getBags() + " bags";
我以为我可以声明这样的字符串? (我来自Java背景并尝试学习C ++)。该 bags
在Visual Studio中有下划线,问题是:
表达式必须具有整数或枚举类型。
getBags()
只是返回一个 int
。
发生这种情况的另一个例子是:
string totalPrice = "Grand Total: " + getTotalPrice();
getTotalPrice()
返回一个 float
并且是错误的下划线。
但是如果我输入一行如下:
string blah = getBags() + "blah";
没有错误。
我在这里不理解什么?
"Check in "
实际上是一个 const char *
。
添加 getBags()
(一个 int
)它产生另一个 const char*
。生成编译器错误是因为您无法添加两个指针。
你需要转换它们 "Check in "
和 getBags()
连接之前的字符串:
string bags = std::string("Check in ") + std::to_string(getBags()) + " bags";
" bags"
将被隐式转换为 string
。
"Check in "
实际上是一个 const char *
。
添加 getBags()
(一个 int
)它产生另一个 const char*
。生成编译器错误是因为您无法添加两个指针。
你需要转换它们 "Check in "
和 getBags()
连接之前的字符串:
string bags = std::string("Check in ") + std::to_string(getBags()) + " bags";
" bags"
将被隐式转换为 string
。
当使用+来追加字符串时,第一个元素必须有operator +,const char *没有它。
因此你应该从它做一个字符串:
string bags = string("Check in ") + getBags() + " bags";
或者按步骤进行:
string bags = string("Check in ") + getBags() + " bags";
编辑:
更多问题是从方法返回的int,由于某种原因,字符串没有operator + for int。
所以你最好像这样使用stringstream:
#include <sstream>
....
ostringstream s;
s<<"Check in " << getBags() << " bags";
string bags = s.str();
尝试 std::to_string(getBags())
。您只能使用字符串连接字符串。