首页 > 编程语言 >c++ 去除字符串首尾的空白字符

c++ 去除字符串首尾的空白字符

时间:2022-12-20 17:35:14浏览次数:52  
标签:std cout c++ Trimmed str 去除 find 首尾 string


c++ 去除字符串首尾的空白字符

  • ​​方法一使用find_first_not_of和find_last_not_of​​
  • ​​方法二使用正则表达式(c++11)​​
  • ​​测试​​
  • ​​测试结果​​

方法一使用find_first_not_of和find_last_not_of

/**
* @brief Trimmed 去掉首尾 空格白
* @param str
*/
void Trimmed(std::string& str) {
str.erase(0, str.find_first_not_of(" \r\n\t\v\f"));
str.erase(str.find_last_not_of(" \r\n\t\v\f") + 1);
// std::cout << "Trimmed [" << str << "]" << std::endl;
}

方法二使用正则表达式(c++11)

/**
* @brief Trimmed_Regex 正则表达式 去字符串首尾的 空白 c++ 11
* @param str
*/
void Trimmed_Regex(std::string& str) {
std::regex e("([\\S].*[\\S])");
str = std::regex_replace (str,e,"$1",std::regex_constants::format_no_copy);
// std::cout << "Trimmed_Regex [" << str << "]" << std::endl;
//std::cout << "Trimmed_Regex [" << std::regex_replace (str,e,"$2") << "]" << std::endl;
}

测试

int main() {
//std::string str ("there is a subsequence in the string\n");
// std::regex e ("\\b(sub)([^ ]*)"); // matches words beginning by "sub"

// // using string/c-string (3) version:
// std::cout << std::regex_replace (s,e,"sub-$2");

// // using range/c-string (6) version:

// std::cout << result;

// // with flags:
// std::cout << std::regex_replace (s,e,"$1 and $2",std::regex_constants::format_no_copy);
// std::cout << std::endl;

clock_t start;

std::string str = "\r\n \t\v\f { Test 123 78927849……&*%&*&*(【】)代收款 } \t\v\f \r\n";

std::cout << "[" << str << "]" << std::endl;

start = clock();
Trimmed_Regex(str);
std::cout << clock() - start << " Trimmed_Regex [" << str << "]" << std::endl;

start = clock();
Trimmed(str);
std::cout << clock() - start << " Trimmed [" << str << "]" << std::endl;
// std::string result;
// std::regex_replace (std::back_inserter(result), str.begin(), str.end(), e, "");
// std::cout << "[" << result << "]" << std::endl;
return 0;
}

测试结果

c++ 去除字符串首尾的空白字符_去空白字符


标签:std,cout,c++,Trimmed,str,去除,find,首尾,string
From: https://blog.51cto.com/u_15918664/5956352

相关文章

  • C++中的class
    用classqxz{};定义一个类,其中private:以下的每一行都是私有成员,而public:以下的每一行都是公有成员(两者可以反复交叉出现多次)。私有成员只能被自己类中的成员函数访问,而......
  • 安装 Python 包时解决 Microsoft visual c++ 14.0 is required 问题
     参考:​​http://www.hongweipeng.com/index.php/archives/1532/​​ 在windows上安装scrapy时经常会遇到这个问题,安装其他组件也可能会遇到。但问题解决办法都是大致......
  • vscode 调试 C++/JavaScript
     MicrosoftVisualStudioCode  在调试JavaScript代码时,其中三种比较简单:1.使用Chrome等浏览器调试2. 使用Ctrl+Shift+B 快捷键运行html文件,需要在Task......
  • ubuntu20.04下C++调用接口解压缩zip文件
     https://github.com/Lecrapouille/zipper Compiling/InstallingTodownloadtheprojectandcompileit:gitclonehttps://github.com/lecrapouille/zipper.g......
  • c++使用this的一个实例
    转载:原文地址正在做一个鼠标绘图程序,在一个class中需要调用鼠标响应函数setMouseCallback,由于setMouseCallback中的mousecallback不支持调用non-staticfunction,遇到了很......
  • C++冷门语法/关键字
    这篇文章将用来记录平时第一次遇到的语法或关键字,仅记录我使用到的功能,不进行拓展。volatileC/C++中的volatile关键字和const对应,用来修饰变量,通常用于建立语言级别......
  • c++用rapidjson解析json串
    业务需要消息传递以json形式,使用rapidjson。把json所有的值对存进一个map里,再根据业务需要判断指令。定义usingrapidjson_object=rapidjson::GenericObject<false,r......
  • UE4蓝图与C++
    C++委托蓝图注册//声明委托必须声明多播委托DECLARE_DYNAMIC_MULTICAST_DELEGATE(FRefresh);//声明委托字段{ UPROPERTY(BlueprintAssignable) FRefreshdTest;......
  • [C++]LeetCode 1760 袋子里最少数目的球
    [C++]LeetCode1760.袋子里最少数目的球题目描述Difficulty:中等RelatedTopics:数组,二分查找给你一个整数数组nums,其中nums[i]表示第i个袋子里球的数目。......
  • [编程基础] C++多线程入门8-从线程返回值
    date:2020-05-2917:09:34+0800tags:-编程基础原始C++标准仅支持单线程编程。新的C++标准(称为C++11或C++0x)于2011年发布。在C++11中,引入了新的线程库。因此运行......