我想澄清一些关于功能的疑问
cin.ignore(1,'\n');
代码:
char x[80];
cin>>x;
cin.ignore(1,'\n');
如果用户输入单词:paul Smith
程序是否查找单词中的第一个空格并忽略/删除其余字符?
因此,该程序只采用保罗并丢弃史密斯?
我是对的吗?
我很困惑!请用非常简单的单词解释,因为我无法理解谷歌关于这个问题的解释。
答案 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');