C++中,字符与字符串直接拼接(重点,易错)
在 C++ 中,`string s; char ch; s = s + ch;` 是可以的,但需要理解其背后的操作原理。
1. `s` 是一个 `std::string` 类型的变量,`ch` 是一个 `char` 类型的变量。
2. 表达式 `s = s + ch;` 实际上是将 `s` 字符串和字符 `ch` 拼接在一起,并将结果重新赋值给 `s`。
### 为什么可以:
在 C++ 中,`std::string` 提供了与字符相加的操作支持。具体来说,`std::string` 类重载了 `+` 运算符,使得我们可以将一个 `char` 类型的单个字符添加到 `std::string` 末尾。这个操作会将 `char` 类型转换为一个长度为 1 的字符串,然后进行拼接。
例如,如果 `s = "hello"`,`ch = '!'`,那么执行 `s = s + ch;` 后,`s` 的值会变成 `"hello!"`。
### 示例代码:
```cpp
#include <iostream>
#include <string>int main() {
std::string s = "Hello";
char ch = '!';// 将字符 'ch' 加到字符串 's' 的末尾
s = s + ch;std::cout << s << std::endl; // 输出 "Hello!"
return 0;
}
```
### 重要的注意事项:
- `std::string` 已经重载了 `+` 运算符,允许字符与字符串的拼接。
- 这会创建一个新的字符串对象,其中包含原来的字符串加上字符 `ch`。
所以,`s = s + ch;` 是完全合法的,执行后会把字符 `ch` 加到字符串 `s` 的末尾。