当前位置:  开发笔记 > 编程语言 > 正文

修剪C中的字符串

如何解决《修剪C中的字符串》经验,为你挑选了3个好方法。

简述:

String.Trim使用win32和标准C api(使用MSVC2008进行编译,因此我可以访问所有C++的东西,如果需要,但我只是试图修剪一个char*).

鉴于存在strchr,strtok以及其他字符串函数的所有方式,肯定应该有装饰功能,或者一个可以改变用途...

谢谢



1> Andrew Grant..:

没有标准的库函数可以做到这一点,但滚动自己并不难.关于这样做的问题有一个现有的问题,用源代码回答.


感谢那.我发现它没有库函数(如果每个人都自己滚动,那么他们都会以各种不同的方式错误地处理unicode等),但是我觉得这就是它...

2> JRL..:

这让我想写自己的 - 我不喜欢那些提供的.在我看来应该有3个功能.

char *ltrim(char *s)
{
    while(isspace(*s)) s++;
    return s;
}

char *rtrim(char *s)
{
    char* back = s + strlen(s);
    while(isspace(*--back));
    *(back+1) = '\0';
    return s;
}

char *trim(char *s)
{
    return rtrim(ltrim(s)); 
}


编辑:审阅我代码的人建议我检查NULL输入值..也许这是您可能要添加的东西

3> John T..:

您可以使用ctype.h中的标准isspace()函数来实现此目的.只需比较字符数组的开头和结尾字符,直到两端都不再有空格.

"空间"包括:

''(0x20)空格(SPC)

'\ t'(0x09)水平标签(TAB)

'\n'(0x0a)换行符(LF)

'\ v'(0x0b)垂直制表符(VT)

'\ f'(0x0c)feed(FF)

'\ r'(0x0d)回车(CR)

虽然没有任何功能可以为您完成所有工作,但您必须重复自己的解决方案,以反复比较给定字符数组的每一侧,直到没有空格.

编辑:

由于您可以访问C++,Boost有一个修剪实现等着您,让您的生活更轻松.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有