【发布时间】:2015-10-23 11:26:05
【问题描述】:
std::cout << "Please enter your first name: ";
std::string name;
std::cin >> name;
// build the message that we intend to write
const std::string greeting = "Hello, " + name + "!"; //LineA
std::cout << greeting;
产品:
你好,anyname_given!
但是当我将“LineA”更改为
const std::string greeting = "Hello, " + "Hello " + "!";
报错
HelloWorld.cpp:34:42: 错误: 'const char [8]' 类型的无效操作数 和'const char [6]'转二进制'operator+'
const std::string greeting = "Hello, " + "Hello" + "!";
为什么说无效的操作数类型?
【问题讨论】:
-
因为“你好”不是 std::string
-
但@Prakash 在第一种情况下也是“你好”,不是 std::string
-
@krishna 后一种情况没有 std::string 对象来评估 + 运算符..您正在尝试添加字符数组..
-
那么您是说要评估必须至少有一个操作数字符串类型。这个案例呢@Prakash "Hello,"+"World"+name;
-
表达式从左到右求值。 "Hello,"+ "World" 被求值,然后它尝试添加名称.. 但由于 "Hello" 和 "World" 都是字符数组 operator + 无法求值 ...
标签: c++ arrays string addition c-strings