使用ignore等输入之间的差异

时间:2015-09-25 21:13:09

标签: c++

我想澄清一些关于功能的疑问

cin.ignore(1,'\n');   

代码:

char x[80];      
cin>>x;       
cin.ignore(1,'\n');      

如果用户输入单词:paul Smith
程序是否查找单词中的第一个空格并忽略/删除其余字符?
因此,该程序只采用保罗并丢弃史密斯? 我是对的吗? 我很困惑!请用非常简单的单词解释,因为我无法理解谷歌关于这个问题的解释。

2 个答案:

答案 0 :(得分:0)

cin.ignore(1,'\n');

不是很有用。它只会忽略一个字符。

cin.ignore(100,'\n');

最多会忽略100个字符,但在遇到'\n'后会停止。

在你的情况下,

cin>>x;       

会将paul读入x。这条线

cin.ignore(1,'\n');

会占用paul之后的空格。因此,Smith将保留在输入流中。

  

因此该程序只接受保罗并丢弃史密斯?

没有。我希望从上面可以看出这一点。

答案 1 :(得分:0)

cin >> x;

由于x是一个字符串或char数组,因此它会从输入中读取一个单词(第一个空白字符的所有内容),并将其存储在x中。

cin.ignore(1, '\n');

从输入中读取并忽略一个字符。它不会读完整行的其余部分。更一般地说:

cin.ignore(n, delim);

读取并忽略字符,直到它读取n个字符或达到等于delim的字符。如果你想忽略直到行的结尾,无论有多少个字符,都要执行:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');