1、多行字输入字符串的处理
-
当我们输入一行带空格的字符串,就要考虑getline函数,从流中读入一行字符串。 -
编程题一般输入为: -
1、输入字符串行数, -
2、然后再一行一行读入字符串。 -
问题:如果正常顺写编程的话,会发现第一行字符串读入的是空,后续才能正常录入每行字符串。 -
原因:因为第一行输入一个int数据后,换行符并没有被忽略,直接被准备读入第一行字符串的getline俘获。 -
解决:在第一行输入一个int数据后,第一次调用getline()前,调用cin.ignore()忽略下面的一个流录入,将其抛弃。
int N;
cin>>N;
cin.ignore();
string strCinLine[N];
for(int i =0;i<N;i++)
getline(cin,strCinLine[i]);
2、空格分割一行字符串
以空格为分界点,分成一个个字符串
vector<string> split(string str)
{
vector<string> res;
int pos = 0;
int i = 0;
for ( ; i < str.size(); ++i)
{
if (str[i] == ' ')
{
res.push_back(str.substr(pos, i - pos));
pos = i+1;
}
}
res.push_back(str.substr(pos, i - pos));
return res;
}
|