stl string reverse
时间: 2023-08-14 11:12:01 浏览: 147
使用STL中的string类实现字符串反转,可以使用`std::reverse`函数。下面是一个示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello, world!";
std::reverse(str.begin(), str.end());
std::cout << str << std::endl;
return 0;
}
```
这段代码会将字符串`"Hello, world!"`反转为`"!dlrow ,olleH"`并输出。在这个示例中,我们使用了`std::reverse`函数来反转字符串中的字符。注意要包含`<algorithm>`和`<string>`头文件。
相关问题
string reverse c++ stl
### 使用C++ STL实现字符串反转
在C++标准模板库(STL)中,有多种方法可以用于字符串的反转操作。以下是几种常见的实现方式:
#### 方法一:利用`std::reverse`
最简单的方式是使用STL中的`<algorithm>`头文件所提供的`std::reverse()`函数来完成字符串反转。
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "hello world";
// 调用std::reverse进行反转
std::reverse(str.begin(), str.end());
std::cout << "Reversed string: " << str << std::endl;
}
```
这种方法简洁明了,适合快速开发场景[^1]。
#### 方法二:手动交换字符位置
如果不希望依赖于额外的标准库算法,则可以通过遍历一半长度的字符串并逐个交换对应两端的字符来进行反转处理。
```cpp
void reverseString(std::string& s) {
int left = 0, right = s.size() - 1;
while (left < right) {
std::swap(s[left++], s[right--]);
}
}
int main() {
std::string str = "hello world";
reverseString(str);
std::cout << "Reversed string: " << str << std::endl;
}
```
此方法展示了基本原理,并且对于理解内部机制非常有用[^2]。
#### 方法三:仅反转字母字符
有时需求可能更加具体,比如只反转给定字符串内的英文字母而不改变其他字符的位置。此时可以在上述基础上增加条件判断逻辑。
```cpp
class Solution {
public:
std::string reverseOnlyLetters(std::string s) {
int left = 0;
int right = s.size() - 1;
while (left < right) {
if (!isalpha(s[left])) {
++left;
} else if (!isalpha(s[right])) {
--right;
} else {
std::swap(s[left], s[right]);
++left;
--right;
}
}
return s;
}
};
```
这段代码实现了更复杂的业务逻辑,在某些特定应用场景下会很有帮助[^3]。
c++ string reverse
C++ 中字符串的反转可以使用 STL 库中的 reverse 函数:
```
#include <algorithm>
#include <string>
std::string str = "Hello, World!";
std::reverse(str.begin(), str.end());
```
也可以手动循环交换字符串的首尾字符:
```
#include <string>
std::string str = "Hello, World!";
int length = str.length();
for (int i = 0; i < length / 2; i++) {
std::swap(str[i], str[length - i - 1]);
}
```
阅读全文
相关推荐

















