字符串在windows和linux中的表示分别为...CR LF和...LF,所以编写程序时为了实现跨平台,需要在代码中明确过滤掉字符串中的CR(回车\r)字符。因为Linux系统只处理LF(换行\n)字符,而将CR字符识别为字符串的一部分。
下面两个程序用于将字符串以","分离成18个子字符串,都可以实现跨平台:
/我自己的//
void split(string in, const char separater, vector &vec) //以" "为分隔符
{
int pos=in.find_first_of(separater);
while(pos!=string::npos&&vec.size()& a_Elements, const char a_Regex)
{
string::size_type prev_pos = 0, pos = 0;
a_Elements.clear();
while ((pos = a_Str.find_first_of(a_Regex, pos)) != string::npos)
{
string element = a_Str.substr(prev_pos, pos - prev_pos);
prev_pos = ++pos;
if (a_Elements.size() == 17)
{
pos = string::npos;
break;
}
}
string element = a_Str.substr(prev_pos, pos - prev_pos);//此处的pos=npos,考虑npos指向字符串的什么位置?
return a_Elements.size();
}
下面两个程序用于将字符串以","分离成18个子字符串,都可以实现跨平台:
/我自己的//
void split(string in, const char separater, vector &vec) //以" "为分隔符
{
int pos=in.find_first_of(separater);
while(pos!=string::npos&&vec.size()& a_Elements, const char a_Regex)
{
string::size_type prev_pos = 0, pos = 0;
a_Elements.clear();
while ((pos = a_Str.find_first_of(a_Regex, pos)) != string::npos)
{
string element = a_Str.substr(prev_pos, pos - prev_pos);
prev_pos = ++pos;
if (a_Elements.size() == 17)
{
pos = string::npos;
break;
}
}
string element = a_Str.substr(prev_pos, pos - prev_pos);//此处的pos=npos,考虑npos指向字符串的什么位置?
return a_Elements.size();
}