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