skipping cin.get() and cin.ignore()
skipping cin.get() and cin.ignore()
出于某种原因,我的程序跳过了代码片段cin.get();
和cin.ignore();
。我不知道为什么会发生这种情况,因为这两个片段仅在主()范围内而不是在if语句中。
这是相关的代码片段:
input.open(inputFileName);
if (input.fail())
{
cout << "Error: failed to open '" << inputFileName << "'.nn";
cout << "Press '' to end the program...";
cin.get(); //cin.ignore() also does nothing.
input.close();
exit(1);
}
可以在此处找到其余的源代码:http://pastebin.com/xy0qmvbq
cin >> inputFileName;
使用该命令,用户将键入一些"东西",然后点击Enter。那将把"东西"加上一个新线字符,并进入输入缓冲区。然后,"东西"将被存储到InputfileName中,并且Newline字符将留在那里。这就是cin.get()和cin.ignore()读取的内容,它们没有被跳过。
您发布的代码的一部分绝对工作正常,在这种情况下,cin.get()在这种情况下不忽略Bieng。
尝试:
std::string dummy;
getline(std::cin,dummy);
或(如果您还没有准备就绪):
cin.ignore(1000,'n');
cin.ignore(1000,' n');删除CIN缓冲区中的所有字符,直到它在CIN缓冲区中找到一个" n"字符或达到忽略/删除字符的最大值(在这种情况下为1000)。
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- C++ cin.ignore() 跳过循环
- 更好的方法,而不是在C ++中使用cin.ignore
- C++ - 如何知道在哪里放置 cin.ignore
- C++:忽略第一个 cin.ignore 之后的输入
- cin.ignore() 正在产生不需要的行为
- 如何将光标移动到 cin.clear() 和 cin.ignore() 之后的文本输出末尾?
- C++ cin.ignore and getline in while loop
- CIN被跳过,Cin.ignore不起作用
- CIN.IGNORE删除第一个字符的第二次函数被调用
- cin.ignore(1)之间的分歧是什么?和cin.ignore(n)
- 使用 cin.ignore 和 cin.clear CPP 时的奇怪行为
- 为什么在"cin"后使用 "getline" 时需要 cin.ignore(),而多次使用 "cin" 时不需要?
- getline删除第一个字符;删除cin.ignore();无法解决
- C++怪异的cin.ignore行为
- Cin 不会暂停输入,尽管同时使用了 cin.clear() 和 cin.ignore()
- 当循环不中断时,使用 cin.ignore 和 cin.clear() 来验证输入
- CIN.IGNORE如何与CIN和Getline一起工作
- 尽管Cin.ignore(),CIN不等待输入
- cin.clear() 和 cin.ignore() 不起作用