在读取配置文件的每行内容的时候,需要去掉字符串中的空格或则tab键,
在C里实现它还是比较容易,但要是用string类来存储每行字符串的时候,
可能就不会象C那样容易处理字符串的每个字符。
为了处理方便,利用递归来去掉string的所有空格字符:
string& trim(string &str, string::size_type pos = 0)
{
static const string delim = " \t"; //删除空格或者tab字符
pos = str.find_first_of(delim, pos);
if (pos == string::npos)
return str;
return trim(str.erase(pos, 1));
}
因为配置文件里每行的内容不会很多,使用递归来讲可能也不会
对整体程序有明显的降低。
如果只是去除两端的空格字符则比较简单一些,网络到处都有它相关的例子:
string trimEnd(string &str)
{
const string &delim =" \t" ;
string r=str.erase(str.find_last_not_of(delim)+1);
return r.erase(0,r.find_first_not_of(delim));
}
在C里实现它还是比较容易,但要是用string类来存储每行字符串的时候,
可能就不会象C那样容易处理字符串的每个字符。
为了处理方便,利用递归来去掉string的所有空格字符:
string& trim(string &str, string::size_type pos = 0)
{
static const string delim = " \t"; //删除空格或者tab字符
pos = str.find_first_of(delim, pos);
if (pos == string::npos)
return str;
return trim(str.erase(pos, 1));
}
因为配置文件里每行的内容不会很多,使用递归来讲可能也不会
对整体程序有明显的降低。
如果只是去除两端的空格字符则比较简单一些,网络到处都有它相关的例子:
string trimEnd(string &str)
{
const string &delim =" \t" ;
string r=str.erase(str.find_last_not_of(delim)+1);
return r.erase(0,r.find_first_not_of(delim));
}