C/C++消除字符串中的无效字符,用于加载配置
来源:互联网 发布:佛教源码 编辑:程序博客网 时间:2024/05/20 17:28
字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。这是最重要的区别。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>// 考虑了右边有空格的情况,但是没有考虑左边有空格的情况void trim_space(char* str){ if(!str) return; char* ptr=str; int len=strlen(ptr); while(len-1>0 && isspace(ptr[len-1])) ptr[--len]=0; while(*ptr && isspace(*ptr)) { ++ptr; --len; } memmove(str,ptr,len+1);}void trim(char* str){ char* start=str; char*end; int len=strlen(str); end=str+len-1; while(1) { char c = *start; if(!isspace(c)) break; start++; if(start>end) { str[0]=0; return; } } while(1) { char c=*end; if(!isspace(c)) { break; } end--; if(start>end) { str[0]=0; return; } } memmove(str,start,end-start+1); str[end-start+1]='\0';}int main(){ char testStr[]=" trim this "; //此处必须使用字符数组// char* pTestStr=&testStr[0]; trim_space(testStr); puts(testStr); return 0;}void trim1(char * str, char* sp, char c){c=' ';char * sp=str;while(*str){if(*str!=c){*sp=*str;sp++;}str++;}sp='\0';}void trim2(string& str,string& del,string::size_type pos=0){pos=str.find_first_of(del,pos);if(pos=string::npos)return ;trim2(str.erase(pos,1),del);}/* c language*/int is_ws(char c){return c==' ';}int trim_3(const char* src, char ** dst){if(strlen(src)==0)return 0;int src_len=strlen(src);int lp=0; /* left padding */int rp=0; /* right padding */while(is_ws(src[lp])&&++lp);while(is_ws(src[src_len-rp-1])&&++rp);if(lp+rp!=0){(*dst)=(char*)realloc((*dst),sizeof(char)*src_len-lp-rp);}int i;for(i=lp;i<src_len-lp;i++)(*dst)[i-lp]=src[i];(*dst)[src_len-lp-rp]='\0';return (lp+rp);}static bool readConfigFile(const char* filePath,const string& key,string& value){ fstream cfgFile; //打开文件 cfgFile.open(filePath); if(cfgFile.is_open()) { cout<<"cant not open file\n"; return false; } char temp[1000]; //此处必须是字符数组 while(!cfgFile.eof()) { cfgFile.getline(temp,1000); string line(temp); trim2(line," "); size_t pos=line.find('='); if(pos==string::npos) return false; string strkey=line.substr(0,pos); //获取的key 和value还需要trim if(strkey==key) { value=line.substr(pos+1); return true; } } return false;}
阅读全文
0 0
- C/C++消除字符串中的无效字符,用于加载配置
- C++中去除字符串中的无效字符,用于加载配置文件
- c实现字符串消除
- C 删除字符串中的字符
- <C语言>消除字符串中的空格--附:消除fgets()函数吃进去的回车符
- c语言中的字符数组与字符串
- C语言中的字符和字符串
- c语言中的字符数组与字符串
- c语言中的字符数组与字符串
- C语言中的字符数组与字符串
- C语言中的字符和字符串
- c语言中的字符数组与字符串
- c 删除字符串中的特殊字符
- c语言中的字符数组与字符串
- c语言删除字符串中的数字字符
- c语言中的字符数组与字符串
- C语言删除字符串中的某个字符
- C#: json字符串中的特殊字符处理
- leetcode 1. Two Sum (C语言)12
- Python脚本进行用户信用评分体系计算的案例
- input标签禁止输入隐藏光标
- 类似百度文库的在线浏览功能
- java 奇数阶幻方全解(连续摆数法)
- C/C++消除字符串中的无效字符,用于加载配置
- 第三周第一节(第二章——线性表1)
- intel realsense usb枚举,读写数据解析
- git 403 总结
- JS(6)
- 日常笔记之md5sum用法
- 斐波纳契数列
- Shiro基本知识
- log4j使用说明