使用 + 运算符的字符串连接 [重复]

Posted

技术标签:

【中文标题】使用 + 运算符的字符串连接 [重复]【英文标题】:String concatenation using + operator [duplicate] 【发布时间】: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 + 无法求值 ... 【参考方案1】:

std::operator+ 可以应用于 std::string 对象,但不能应用于 char[]..

“你好,”是一个字符数组。

您可以执行以下添加,

 std::string hello = "Hello ,";
 std::string greeting = hello + name ;

【讨论】:

以上是关于使用 + 运算符的字符串连接 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

字符串连接中 string.concat 和 + 运算符之间的区别[重复]

EL中的字符串连接[重复]

String.format() 与“+”运算符 [重复]

Js--字符串拼接/连接

03.运算符

字符串php数组[重复]