博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
trim函数
阅读量:6334 次
发布时间:2019-06-22

本文共 2089 字,大约阅读时间需要 6 分钟。

hot3.png

/************************************************************************//*   C++ trim函数:去掉字符串最左端和最右端的空白符(包括空格/水平制表符等), *              字符串之间的空格就不管它 *  "  hello word " trim之后变成 “hell word   ” *  1 思路: *   d 指向字符串的开始位置 *   c 指向字符串的前端非空白开始位置 *   b 指向字符串的后端非空白开始位置 *  存储结构 char data[] *   *  test1 *  strlen =12values:  hi world!    strlen =12values:hi worldld! trim right is wrong *  /************************************************************************/void mystring::trim2(char *input){    char* pBegin = NULL;//指向字符串的开始位置    char* pEnd = NULL;//指向字符串的开始位置    int iNotCharCount = 0;//指向字符串的前端空白个数    int iCharCount = 0;//指向字符串的前端非空白个数 如何统计    //trim left    // 循环条件*pBegin!='\0'  变化条件 pBegin++    for (pBegin = input; *pBegin!='\0'; pBegin++)    {  //非空        if (*pBegin!=' ')        {            break;        }        iNotCharCount++;//统计前端空字符个数    }    //trim right    char* pTemp = NULL;    for (pTemp = pBegin; *pTemp != '\0'; ++pTemp)    {        if (*pTemp != ' ')        {            pEnd = pTemp;        }            }    //set string endls    pEnd++;    *pEnd = '\0';    //    iCharCount = pEnd - pBegin+1;        //change input else you cant return the right values    if (iNotCharCount>iCharCount)    {        strncpy(input, pBegin, iCharCount);    }    else    {          memmove(input, pBegin, iCharCount);        cout << "pBegin=" << pBegin << endl;        cout << "pEnd=" << pEnd << endl;    }}

  修订 第二版

  

void mytrim(char *pData){    char* pTemp =  pData;    char* pBegin = NULL;    char* pEnd = NULL;    bool  nFirst =false;       //获取非空白字符串开始位置和结束位置   while(pData &&*pTemp!='\0')   {        if(*pTemp!=' ')     {             pEnd=pTemp;//save the last char string                   if(nFirst == false)         {             pBegin = pTemp; //开始位置         }         nFirst =true;     }          ++pTemp;//移动   }   //可能没有进入while循环   if(pEnd == NULL || pBegin == NULL)   {       *pData='\0';   }else   {     *(++pEnd)='\0';        //trim left     int charLength=pEnd-pBegin+1;    strncpy(pData,pBegin,charLength);   }     }

转载于:https://my.oschina.net/woyaoxue/blog/498084

你可能感兴趣的文章
Java线程:大总结
查看>>
java.lang.OutOfMemoryError: GC overhead limit exceeded
查看>>
Android--MediaPlayer高级
查看>>
C#:10进制转2进制函数
查看>>
EBS R12中中间层(Middle Tier)及应用层脚本(单独开启各服务脚本)-DB层
查看>>
基于OEA框架的客户化设计(二) 元数据设计
查看>>
Java程序性能优化9
查看>>
把系统CALLBACK函数封装到C++类里
查看>>
输入控件tagsinput
查看>>
React Native填坑之旅--布局篇
查看>>
Tomcat5配置mysql4数据源
查看>>
RecyclerView 配合 DiffUtil,好用到飞起
查看>>
hdfs du命令是算的一份数据
查看>>
ASP.NET 进阶】根据IP地址进行百度地图定位
查看>>
SSRS配置1:凭证和邮件
查看>>
HyperLinkField
查看>>
ReentrantLock和synchronized两种锁定机制
查看>>
真正的上锁前,为何要调用preempt_disable()来关闭抢占的case【转】
查看>>
Creating and Using a Dynamic Link Library
查看>>
Qt 一步一步实现dll调用(附源码)
查看>>