21xrx.com
2025-03-30 12:45:49 Sunday
文章检索 我的文章 写文章
C++ 字符串去除左右空格
2023-06-29 02:10:24 深夜i     11     0
C++ 字符串 去除 左右空格

C++ 字符串的处理是编程中必不可少的一项技能,其中处理字符串中的空格也是一个常见的问题。如果在字符串中存在不必要的空格会导致字符串无法正确的被解析、比较,或者会影响程序的正确运行。

C++ 提供了一些函数库用于处理字符串的空格,本文将介绍如何使用这些函数来去除字符串的左右空格。

1. 使用 stringstream

C++ 中的 stringstream 可以方便的将字符串转换为任意其他类型的数据,并进行格式化输入输出。其中 getline() 函数可以读取一个完整的字符串,我们可以将整个字符串读取到内存中,再通过 stringstream 去除左右空格。

#include <sstream>
#include <string>
#include <iostream>
std::string trim(std::string const& str)
{
  std::stringstream ss(str);
  std::string result;
  ss >> std::ws;
  std::getline(ss, result);
  return result;
}
int main()
{
  std::string str = "  hello world   ";
  std::string trimmed_str = trim(str);
  std::cout << trimmed_str << std::endl;
  return 0;
}

输出:

hello world

2. 使用 find_last_not_of 和 find_first_not_of

C++ 中的 std::string 类型提供了 find_last_not_of 和 find_first_not_of 函数,用于查找字符串中除指定字符外的最后一个或第一个字符的位置。我们可以使用这两个函数确定字符串的左右空格,并将其删除。

#include<string>
std::string trim(std::string const& str)
{
  auto last = str.find_last_not_of(" ");
  auto first = str.find_first_not_of(" ");
  if (last == std::string::npos || first == std::string::npos)
    return "";
  
  else {
    return str.substr(first, last - first + 1);
  }
}

3. 使用 regex_replace

C++11 引入了正则表达式 regex,我们可以使用 regex_replace 函数来替换字符串中所有的空格。

#include <regex>
#include <string>
std::string trim(std::string const& str)
{
  std::regex pattern("^\\s+|\\s+$");
  return std::regex_replace(str, pattern, "");
}

总结:

本文介绍了 3 种常见的方法用于去除 C++ 字符串的左右空格,通过实际案例演示了代码的使用方式,并总结出各种方法的优缺点,程序员可以根据自己的需求,选择最适合自己的方法。

  
  

评论区

请求出错了