使用过MFC的人都知道,MFC的字符串CString有些函数比较好用的,如: TrimLeft(), TrimRight()为CString所包含有的子函数,可以去掉左右空格符,但std::string却没有。

以下我们使用std的标准函数来实现此功能:

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

template<typename _Tp>
inline bool is_not_space (_Tp a) {
  return !std::isspace(a);
}

void trim_left(string& pstr)
{
    string l_strtemp;
    std::string::iterator pfind = std::find_if(pstr.begin(),pstr.end(),is_not_space<std::string::value_type>);

if(pfind!=pstr.end())
    {
        l_strtemp.assign(pfind,pstr.end());
        pstr = l_strtemp;
    }
}

void trim_right(string& pstr)
{
    string l_strtemp;
    std::string::reverse_iterator pfind = std::find_if(pstr.rbegin(),pstr.rend(),is_not_space<std::string::value_type>);

if(pfind!=pstr.rend())
    {
        std::string::iterator pend(pfind.base());
        l_strtemp.assign(pstr.begin(),pend);
        pstr = l_strtemp;
    }
}

int main()
{

std::string l_str(" \n test \n  ");
    trim_left(l_str);
    cout<<" test string:"<<l_str<<"#"<<endl;
    trim_right(l_str);
    cout<<" test string:"<<l_str<<"#"<<endl;

return 0;
}

使用std实现string的TrimLeft与TrimRight功能相关推荐

  1. no match for call to ‘(std::__cxx11::string {aka std::__cxx11::basic_string

    问题:  t->package().ship_id(sqlRow[1]); 其中 ship_id为 结构体package中的string类型. 如下: typedef struct Packag ...

  2. CString中 format、trimLeft和trimright、trim 和FindOneOf用法

    1.format 可以帮助各种类型转换成CString. a. int 转 CString CString str; int number = 4; str.Format(_T("%d&qu ...

  3. CString字符串查找和截取与去空格(Find,FindOneOf,ReverseFind,Left,Mid,Right,substr,TrimLeft和TrimRight)

    一.CString之Find().FindOneOf().ReverseFind(). 此三个函数返回值均为整数int. 1.Find() 该函数从最左侧0位置开始索引,查找到第一个出现该字符的位置, ...

  4. 用java自己实现String类的trim()方法功能

    用java自己实现String类的trim()方法功能 我们都知道String类中的trim()方法的功能在于:"返回字符串的副本,其中该副本忽略前导空白和尾部空白."(这是api ...

  5. 【Dart 教程系列第 40 篇】Dart 之 trim,trimLeft,trimRight 字符串去除空格

    这是[Dart 教程系列第 40 篇],如果觉得有用的话,欢迎关注专栏. trim 源码如下所示 String trim(); 语法 去除字符串中左右两边的空格,注意不是去掉字符串中所有的空格.如果两 ...

  6. TrimLeft()和TrimRight()

    strming.TrimLeft();  //将字符串最前面的空格修整掉.当在没有参数的情况下调用时,TrimLeft删除换行符,空格和tab字符. strming.TrimRight()://消除从 ...

  7. Delphi中trim、trimleft以及trimright的用法

    trim : 去掉字符串左右两边的空格 trimleft :去掉字符串左边的空格 trimright :去掉字符串右边的空格 Delphi更多交流学习请加QQ: 2609715119  非诚勿扰!

  8. STD中string的常用方法总结

    在程序中常常需要处理字符串,除了以前写的一些关于char的方法的总结外,很多的时候也会用到string来进行字符串处理.下面对它的常用方法做些总结: 1.定义: string &operato ...

  9. String字符串类的获取功能

    StringDemo.java /** String类的获取功能:* int length():获取字符串的长度,其实也就是字符个数* char charAt(int index):获取指定索引处的字 ...

最新文章

  1. 转: Meshlab简介
  2. java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询
  3. BootStrap--CSS组件
  4. 视觉里程计02 基于特征匹配的位姿估计
  5. php100视频解压密码
  6. 突破百度知道瓶颈,问淘宝引流
  7. 芯片工程师常用英文黑话
  8. 学金融会python_大学生金融小白自学Python做量化投资需要注意哪些?
  9. android 耳机监听权限,android 耳机监听
  10. 液相色谱仪网络版计算机化再确认,高效液相色谱仪计算机验证部分要点!
  11. Markdown 插入图片的方法
  12. 梦想汽车 NFT 系列
  13. windows版Rsync服务端和客户端cwRsync_4.1.0安装测试
  14. 可重入锁的理解及公平锁和非公平锁的具体实现
  15. 最好用的格式转化器File Converter
  16. Nginx实战应用--对于构建虚拟主机,Socket的作用,你学废了吗?
  17. HuTool工具包实现Excel文件的上传、下载以及修改文件名称
  18. 射频识别技术漫谈(3)——能量、调制
  19. 重磅亲测!ChatGPT是否产生了自我意识?
  20. 3.JavaScript快速入门

热门文章

  1. 利用python对亚马逊智能产品评论进行分析
  2. 高光谱图像去噪(一)
  3. 名厨 android项目,一起当名厨app
  4. 阿里的在线评测题:多线程打印数据
  5. 蚂蚁集团-数字金融线-体验技术部前端一面面经
  6. android 自定义表情包,快速打造 Android 自定义表情库
  7. 苹果APP安装包ipa如何安装在手机上
  8. iframe target属性
  9. 医院计算机软件是否是固定资产,计算机及网络技术在医院固定资产管理方面的应用计...
  10. L1-013 计算阶乘和 10分 (C++实现)