当前位置: 首页> 科技> 名企 > C++ 实现字符串处理和反转操作的巧妙方法【字符串、istringstream】

C++ 实现字符串处理和反转操作的巧妙方法【字符串、istringstream】

时间:2025/7/13 5:11:55来源:https://blog.csdn.net/qq_22841387/article/details/140545369 浏览次数:0次

C++ 实现字符串处理和反转操作的巧妙方法

在字符串处理过程中,我们经常会遇到一些复杂的需求,如去除字符串两端的空格、按空格拆分字符串、翻转单词顺序等。本文将详细介绍如何在C++中高效实现这些操作。

实现代码

首先,我们来看一下完整的实现代码:

class Solution {
public:// 去除字符串前后的空格string trim(string str) {int first = str.find_first_not_of(' ');int last = str.find_last_not_of(' ');if (first == string::npos || last == string::npos) {return "";}return str.substr(first, last - first + 1);}// 按空格拆分字符串vector<string> split(string str) {istringstream iss(str);string word;vector<string> result;while (iss >> word) {result.push_back(word);}return result;}// 反转单词顺序string reverseWords(string s) {vector<string> ans = split(trim(s));string result;reverse(ans.begin(), ans.end());for (const string temp : ans) {if (!result.empty()) {result += " ";}result += temp;}return result;}
};

1. 去除字符串前后的空格

处理字符串时,首先要去除字符串前后的空格。我们可以使用std::stringfind_first_not_offind_last_not_of方法来实现:

string trim(string str) {int first = str.find_first_not_of(' ');int last = str.find_last_not_of(' ');if (first == string::npos || last == string::npos) {return "";}return str.substr(first, last - first + 1);
}

详细解释:

  • find_first_not_of(' '):找到第一个非空格字符的位置。
  • find_last_not_of(' '):找到最后一个非空格字符的位置。
  • 如果字符串全是空格,则返回空字符串。
  • 使用substr提取非空格部分的子字符串。

2. 按空格拆分字符串

拆分字符串是处理文本的一部分。在C++中,我们可以使用std::istringstream来按空格分割字符串:

vector<string> split(string str) {istringstream iss(str);string word;vector<string> result;while (iss >> word) {result.push_back(word);}return result;
}

详细解释:

  • 使用std::istringstream将字符串转换为输入流。
  • 使用>>运算符从输入流中读取单词,逐个存入std::vector中。

3. 巧妙处理空格串,翻转单词顺序

在翻转单词顺序时,我们需要将拆分后的单词存入一个std::vector中,然后进行反转操作:

string reverseWords(string s) {vector<string> ans = split(trim(s));string result;reverse(ans.begin(), ans.end());for (const string temp : ans) {if (!result.empty()) {result += " ";}result += temp;}return result;
}

详细解释:

  • 使用前面定义的trim方法去除字符串前后的空格。
  • 使用split方法按空格拆分字符串。
  • 使用std::reverse方法反转存储单词的std::vector
  • 遍历反转后的std::vector,逐个将单词组合成一个新字符串。
  • 在组合单词时,判断result是否为空,非空时添加空格。

总结

通过上述方法,我们可以高效地处理字符串,去除空格、拆分单词并翻转单词顺序。使用std::stringstd::istringstreamstd::vector等标准库,可以简化代码实现,提高可读性和维护性。

关键字:C++ 实现字符串处理和反转操作的巧妙方法【字符串、istringstream】

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: