您的位置:首页 > 其它

getline()之前存在cin时的使用

2016-02-26 17:21 369 查看
cin.getline()用来读取一行数据,但是当cin.getline()前面进行了cin输入的话,cin.getline()会把进行cin输入时行末丢弃的换行符读入,从而造成cin.getline()第一次获得的数据为一空行,如下所示:
int main()
{
int rep;
cin >> rep;
for (int i=0; i<rep; i++)
{
cin.getline(str,25);
}
}
此时cin.getline()所读入的第一行是空行,并且占据一次读入次数,造成只能再输入rep-1次数据。
解决办法
cin.ignore();
如下所示:
int main()
{
int rep;
cin >> rep;
cin.ignore();
for (int i=0; i<rep; i++)
{
cin.getline(str,25);
}
}
如此即可忽略掉第一次输入所遗留的换行符,用cin.getline()直接读取下一行输入的数据。

另外,cin.getline(str,length,"读取截止标志")可以用来读取一行数据,并且自动忽略所设置的读取截止标志
(默认是换行符),这一点不同于cin.get().
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: