指针字符串和数组字符串:
字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。
这是最重要的区别。
#include<>
#include<>
#include<>
#include<>
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);
}
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((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;
//打开文件
(filePath);
if(cfgFile.is_open())
{
cout<<"cant not open file\n";
return false;
}
char temp[1000]; //此处必须是字符数组
while(!())
{
(temp,1000);
string line(temp);
trim2(line," ");
size_t pos=('=');
if(pos==string::npos)
return false;
string strkey=(0,pos); //获取的key 和value还需要trim
if(strkey==key)
{
value=(pos+1);
return true;
}
}
return false;
}