一、字符串去空格(没有处理字符串中间的空格)

lTrim:除去字符串开头的空格    eg."    abc123    " --> "abc123    "

rTrim:除去字符串末尾的空格    eg."    abc123    " --> "    abc123"

Trim:除去字符串开头和末尾的空格  eg."    abc123    " --> "abc123"

品红色为空格

1.去除开头的空格

void lTrim(char * str)
{
int i , len ; len = strlen( str ) ;
for( i=; i<len; i++)
{
if( str[i] != ' ') break ;
}
memmove(str,str+i,len-i+);
return ;
}

2.去除末尾的空格

void rTrim(char * str)
{
int i,len ; len = strlen( str ) ;
for(i = len-;i>=;i--)
{
if( (str[i] != ' ')&&(str[i]!=0x0a)&&(str[i]!=0x0d) ) break ;
}
str[i+] = ;
return ;
}

3.去除开头和末尾的空格

void Trim(char * str)
{
int i , len ; //先去除左边的空格
len = strlen( str ) ;
for( i=; i<len; i++)
{
if( str[i] != ' ') break ;
}
memmove(str,str+i,len-i+); //再去除右边的空格
len = strlen( str ) ;
for(i = len-; i>=; i--)
{
if(str[i] != ' ') break ;
}
str[i+] = ; return ;
}

也可以这样

void Trim(char * str)
{
  lTrim(str);
  rTrim(str);
}

注:1.这里没有处理字符串中间的空格  eg."   abc   123   " -->  "abc   123"

  2.这里只去除了“空格”和末尾的“回车”、“换行”符,其他的可以根据需要添加

" "     (ASCⅡ 32(0x20))    一个空格
"\t"    (ASCⅡ 9(0x09))   tab键
"\n"    (ASCⅡ 10 (0x0A))   换行符
"\r"    (ASCⅡ 13 (0x0D))   a carriage return.
"\0"    (ASCⅡ 0 (0x00))   空字符
"\x0B"   (ASCⅡ 11 (0x0B))   a vertical tab.

二、从pstr中删除所有rmchar字符

  包括字符串中间的字符: eg.空格(  ) "   abc   123   " -->  "abc123"  eg.逗号(,) ",,,abc,,,123,,," -->  "abc123"

//从pstr中删除所有rmchar字符
void TrimEx(char *pstr,char rmchr)
{
char szOut[];
memset(szOut,,sizeof(szOut));
if (strlen(pstr)>sizeof(szOut))
return; int index=;
for(int i=;i<strlen(pstr);i++)
{
if( pstr[i] != rmchr)
{
szOut[index++]=pstr[i];
}
}
strcpy(pstr,szOut);
}

三、附录:在网上找到的其他“去除开头和末尾空格”的方法,也拷贝下,根据需要选择

A.

inline string&  lTrim(string   &ss)
{
string::iterator p=find_if(ss.begin(),ss.end(),not1(ptr_fun(isspace)));
ss.erase(ss.begin(),p);
return ss;
} inline string& rTrim(string &ss)
{
string::reverse_iterator p=find_if(ss.rbegin(),ss.rend(),not1(ptr_fun(isspace)));
ss.erase(p.base(),ss.end());
return ss;
} inline string& trim(string &st)
{
lTrim(rTrim(st));
return st;
}

B.

string LTrim(const string& str)
{
  return str.substr(str.find_first_not_of(" \n\r\t"));
} string RTrim(const string& str)
{
  return str.substr(,str.find_last_not_of(" \n\r\t")+);
} string Trim(const string& str)
{
  return LTrim(RTrim(str));
}

欢迎转载,方便的话,请注明出处,谢谢!

C++ 实现Trim的更多相关文章

  1. [PHP源码阅读]trim、rtrim、ltrim函数

    trim系列函数是用于去除字符串中首尾的空格或其他字符.ltrim函数只去除掉字符串首部的字符,rtrim函数只去除字符串尾部的字符. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下 ...

  2. php的empty(),trim(),strlen()方法

    如果empty()函数的参数是非空或非零的值,则empty()返回FALSE.换句话说,"".0."0".NULL.array().var$var:以及没有任何 ...

  3. ORACLE中的LTRIM、RTRIM和TRIM

    LTRIM.RTRIM和TRIM在ORACLE中的用法:1.LTRIM(C1,C2)其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVER不 ...

  4. mybatis : trim标签, “等于==”经验, CDATA标签 ,模糊查询CONCAT,LIKE

    一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条 ...

  5. IE8下String的Trim()方法失效的解决方案

    简洁方便 用jquery的trim()方法,$.trim(str)就可以了.

  6. Delphi的Trim函数

    三个Trim函数简介 函数原型 function Trim(const S: string): string; 将字符串前后的空白及控制字元清掉. 注意Trim函数只能清掉字符串前后的空格及控制字元, ...

  7. jQuery静态方法noop,camelCase,nodeName,trim使用和源码分析

    noop方法 jQuery.noop()函数是一个空函数,它什么也不做. 当某些时候你需要传入函数参数,而且希望它什么也不做的时候,你可以使用该函数,也无需再新建一个空的函数. 示例: // 传入一个 ...

  8. jquery $.trim()去除字符串空格详解

    jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...

  9. C#中Trim()、TrimStart()、TrimEnd()的用法

    string s = " from dual union all ";          s = s.Trim().TrimEnd("union all".To ...

  10. SSD Trim Support -- 保护 SSD

    今天同事告诉我,换了 ssd 之后需要做以下配置能使 ssd 寿命更长.原理是配置系统定期清理和回收 ssd 的资源. 最终效果: 步骤: 1.下载 trim enabler: https://gis ...

随机推荐

  1. java多态的理解----部分非原创

    所谓多态,其实就是对于同一件事情,不同的对象要采取不同的行为,或者同一个对象在不同的情况下需要采取不同的行为方式. 不同的对象要采取不同的行为: 这有两种实现方式:接口实现和子类重新父类方法.这两种实 ...

  2. [Protractor] Protractor Interactive with elementor

    Install: npm install -g elementor Then run: webdriver-manager start Lets say if we want to test 'htt ...

  3. 机器学习实战笔记5(logistic回归)

    1:简单概念描写叙述 如果如今有一些数据点,我们用一条直线对这些点进行拟合(改线称为最佳拟合直线),这个拟合过程就称为回归.训练分类器就是为了寻找最佳拟合參数,使用的是最优化算法. 基于sigmoid ...

  4. Android 打造自己的个性化应用(五):仿墨迹天气实现续--> 使用Ant实现zip/tar的压缩与解压

    上一篇中提到对于Zip包的解压和压缩需要借助Ant 实现,我经过参考了其他的资料,整理后并加上了一些自己的看法: 这里就具体地讲下如何使用Ant进行解压缩及其原因: java中实际是提供了对  zip ...

  5. 一道movfuscator混淆过的简单逆向

        月赛中出了道经过movfuscator混淆的逆向题目,记录一下过程.跑起来发现需要用户输入长度为20的字符串,我尝试着输入了几次都是直接退出了,没有任何提示.用IDA打开,题目里面几乎全是mo ...

  6. Javascript进阶篇——浏览器对象—JavaScript计时器

    ---恢复内容开始--- JavaScript 计时器在JavaScript中,我们可以在设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.计时器类型:一次性计时器:仅在指定的延迟时间之后触 ...

  7. poj1088 经典DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88296   Accepted: 33100 Description ...

  8. shell中的退出状态码

    shell中的退出状态码最大只有255,如果超过这个值,就会进行取余运算,即如果执行如下命令: exit exitCode 如果exitCode大于255,那么实际的状态码为exitCode % 25 ...

  9. Java程序的成长之路

    转载链接:http://www.admin10000.com/document/2901.html 互联网发展日新月异,社会科技每天都在发生着翻天覆地的变化,而程序员已经成了这个时代的庞大群体,各种各 ...

  10. 用H5实现微信的四个界面

    代码更新中