trim函数
2015-08-27 15:37
190 查看
/************************************************************************/ /* 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); } }
相关文章推荐
- Poj.1696 Space Ant【极角排序】 2015/08/27
- Python数据库ORM SQLAlchemy 0.7学习笔记(5) 查询
- sqoop 根据时间增量导入
- Ibatis 何时使用CDATA
- 解读:hadoop压缩格式
- bzoj3629[JLOI2014]聪明的燕姿
- nginx限制ip连接数和带宽
- mysql 修改server characterset latin1为 utf8(乱码问题)
- UI设计师不可不知的安卓屏幕知识
- SWIFT 2.0 复习笔记
- 4000 卸载ORACLE
- 短路和非短路的"与"、"或"
- 设计模式面试
- 强大的c#.net应用程序winform框架类库-WeifenLuo.WinFormsUI.Docking.dll
- C++三法则:如果需要析构函数,则一定需要拷贝构造函数和赋值操作符
- Volley简介
- Nginx的安装与启动
- 使用 Vagrant 打造跨平台开发环境
- UVA1347-Tour 双调欧几里得旅行商问题 - 递归记忆实现
- 6. jQuery 效果 - 淡入淡出