C++ 字符串反转
时间: 2025-07-01 22:04:21 浏览: 8
在 C++ 中,字符串反转可以通过多种方式实现。以下是几种常见的方法及其示例代码:
### 使用标准库函数 `reverse`
C++ 标准库中的 `<algorithm>` 头文件提供了 `reverse` 函数,可以直接用于字符串的反转操作。此方法简洁高效,适合大多数应用场景。
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "123";
std::reverse(str.begin(), str.end());
std::cout << str << std::endl;
return 0;
}
```
该方法直接修改原始字符串的内容,因此被称为“原地反转”[^1]。
### 自定义循环交换字符
另一种实现字符串反转的方法是通过手动编写循环逻辑,逐个交换字符串首尾对应的字符。这种方法虽然不如使用标准库函数简洁,但有助于理解底层实现机制。
```cpp
#include <iostream>
#include <string>
std::string reverseString(std::string str) {
int n = str.length();
for (int i = 0; i < n / 2; i++) {
char temp = str[i];
str[i] = str[n - i - 1];
str[n - i - 1] = temp;
}
return str;
}
int main() {
std::string inputString;
std::cout << "请输入要反转的字符串:";
std::cin >> inputString;
std::string reversedString = reverseString(inputString);
std::cout << "反转后的字符串为:" << reversedString << std::endl;
return 0;
}
```
此方法同样支持对任意字符串进行反转,并且可以灵活调整逻辑以适应特定需求[^2]。
### 使用递归方法
递归方法是一种经典的算法设计技巧,也可以应用于字符串反转。尽管对于较长的字符串可能效率较低,但在教学或理解递归概念时非常有用。
```cpp
#include <iostream>
#include <string>
std::string reverseStringRecursive(std::string s) {
if (s.empty()) {
return s;
} else {
return reverseStringRecursive(s.substr(1)) + s[0];
}
}
int main() {
std::string inputString;
std::cout << "请输入要反转的字符串:";
std::cin >> inputString;
std::string reversedString = reverseStringRecursive(inputString);
std::cout << "反转后的字符串为:" << reversedString << std::endl;
return 0;
}
```
递归方法通过不断缩小问题规模来逐步构建最终结果,适合学习和理解递归思想。
### 总结
- **推荐实践**:如果追求代码简洁性和性能,优先选择使用标准库提供的 `reverse` 函数。
- **学习目的**:若是为了深入理解字符串反转的底层原理,则可以选择自定义循环交换字符或递归方法。
阅读全文
相关推荐

















