21xrx.com
2025-04-03 20:22:25 Thursday
文章检索 我的文章 写文章
C++如何去除字符串头尾的空格
2023-07-05 10:55:38 深夜i     34     0
C++ 字符串 空格 去除

在C++编程中,经常会涉及到字符串的操作。而有时候,我们需要去掉字符串首尾空格,以方便后续处理。那么,C++如何去除字符串头尾的空格呢?

方法一:使用erase和find_first_not_of

我们可以使用string类提供的erase和find_first_not_of函数来删除字符串头尾的空格。具体步骤如下:

1.使用find_first_not_of函数找到第一个非空格字符的位置(从字符串开头开始查找)。

2.使用erase函数删除字符串开头的空格部分。

3.使用find_first_not_of函数找到字符串末尾第一个非空格字符的位置(从字符串结尾开始查找)。

4.使用erase函数删除字符串结尾的空格部分。

下面是示例代码:

#include <iostream>
#include <string>
using namespace std;
string trim(string s)
{
  // 删除字符串开头的空格
  s.erase(0, s.find_first_not_of(" "));
  
  // 删除字符串结尾的空格
  s.erase(s.find_last_not_of(" ") + 1);
  
  return s;
}
int main()
{
  string str = "  Hello World!  ";
  
  cout << "Before trimming: " << str << endl;
  
  str = trim(str);
  
  cout << "After trimming: " << str << endl;
  
  return 0;
}

方法二:使用stringstream和getline

还可以使用stringstream和getline函数去除字符串的空格。具体步骤如下:

1.将需要去除空格的字符串放入stringstream对象中。

2.使用getline函数从stringstream对象中逐行读取字符串,并存储到另一个string对象中。

3.将存储到另一个string对象中的字符串返回。

下面是示例代码:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
string trim(string s)
{
  stringstream ss(s);
  string result;
  while (getline(ss, s, ' '))
  {
    result += s;
  }
  
  return result;
}
int main()
{
  string str = "  Hello World!  ";
  
  cout << "Before trimming: " << str << endl;
  
  str = trim(str);
  
  cout << "After trimming: " << str << endl;
  
  return 0;
}

总结

以上就是C++去除字符串头尾空格的两种方法。我们可以根据实际需求选择合适的方法。值得注意的是,这两种方法都可以通过封装成函数,方便后续使用。

  
  

评论区

请求出错了