21xrx.com
2024-11-05 16:40:02 Tuesday
登录
文章检索 我的文章 写文章
C++ 字符串修剪(trim)
2023-06-24 05:51:39 深夜i     --     --
C++ 字符串 修剪 trim

C++ 字符串修剪(trim)指的是对字符串两端的空格、制表符、换行符进行删除或替换操作。在实际开发中,字符串修剪经常用于去除输入或输出的无效字符,以及处理字符串前后的空格等情况。

C++ 的字符串类 std::string 中没有提供字符串修剪的直接实现,需要借助一些函数来实现。

第一种方法是使用 C++ 标准库提供的算法库进行修剪,具体代码如下:


#include <algorithm>

#include <cctype>

#include <string>

std::string trim(std::string str) {

  str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](int ch) {

    return !std::isspace(ch);

  }));

  str.erase(std::find_if(str.rbegin(), str.rend(), [](int ch) {

    return !std::isspace(ch);

  }).base(), str.end());

  return str;

}

该方法使用 std::find_if 函数查找第一个非空白字符,然后调用 std::erase 函数删除第一个非空白字符之前的所有字符;在找到最后一个非空白字符时,使用 std::base 函数将迭代器修正为正向迭代器,从而通过 std::erase 函数删除最后一个非空白字符之后的所有字符。

第二种方法是使用正则表达式进行修剪,具体代码如下:


#include <regex>

#include <string>

std::string trim(std::string str) {

  return std::regex_replace(str, std::regex("^\\s+|\\s+$"), "");

}

该方法使用 std::regex_replace 函数将以空格开始或结束的子串全部替换为空字符串。

使用 C++ 字符串修剪可使程序更加健壮、优雅和简洁,但需要根据具体需求选择合适的方法实现。

  
  

评论区

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