21xrx.com
2024-11-22 06:30:45 Friday
登录
文章检索 我的文章 写文章
C++ 字符串去除左右空格
2023-06-29 02:10:24 深夜i     --     --
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++ 字符串的左右空格,通过实际案例演示了代码的使用方式,并总结出各种方法的优缺点,程序员可以根据自己的需求,选择最适合自己的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复