Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++:带有简单菜单选择的无限循环_C++_Stdin_Infinite Loop - Fatal编程技术网

C++:带有简单菜单选择的无限循环

C++:带有简单菜单选择的无限循环,c++,stdin,infinite-loop,C++,Stdin,Infinite Loop,我正在编写的脚本长达一页,因此我将把它链接到一个简单的文件: 我为此道歉。我的问题是我在代码中进入了一个无限循环,例如,在我选择1或2进行加密/取消加密后,它允许我输入单词,当我下次输入密码的shift时,它运行菜单的无限循环 我已经试了很多小时来调试这个,我认为这是cin的问题,例如,当你输入一个无效的选择时,它只是抛出一个无限循环/ 是什么导致了Infinine循环?我认为应该忽略换行符而不是空格 我尝试了以下内容,它在VS2010上运行 cin.ignore(1, '\n');

我正在编写的脚本长达一页,因此我将把它链接到一个简单的文件:

我为此道歉。我的问题是我在代码中进入了一个无限循环,例如,在我选择1或2进行加密/取消加密后,它允许我输入单词,当我下次输入密码的shift时,它运行菜单的无限循环

我已经试了很多小时来调试这个,我认为这是cin的问题,例如,当你输入一个无效的选择时,它只是抛出一个无限循环/


是什么导致了Infinine循环?

我认为应该忽略换行符而不是空格

我尝试了以下内容,它在VS2010上运行

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

试试cin.clear,我相信你一直在阅读你的初始输入字符

    cin >> selection;
    cin.clear(); 

应该解释你需要知道的一切。

也许你需要使用char c;cin.getc;在我认为它也是std::string之后,您必须将其转换为整数。。如果它每次都这样对我,我很难接受它的使用。不幸的是,我试图在他们两人之前附加它,它再次无限循环我甚至在所有cin之前就试过了。这太令人困惑了!你能试试这个“{while cin.peek='\n'| | cin.peek='\r'cin.get;}”我把它放在哪里,为什么它周围有括号,你是指cin而不是fin?谢谢。请使用代码'while cin.peek='\n'| | cin.peek='\r'cin.get;'不幸的是,同样的事情,无限循环吐出两个cout/cin请求,输入text+shift+菜单无限次,就像它不知何故完全忽略了每个cin请求无限次,即使没有输入任何内容。。。在其他人的编译器上也是这样!哇。。。这样做会使它在菜单上循环4次,然后等待我的选择。。这做了些什么,嘿,我试着看看它做了什么,这是如此奇怪为什么会发生这种情况。@Chubsdad是正确的,它确实清除了标志,但它似乎停止了你的循环我相信它工作的原因是你正在从cin读取一个字符,并将其分配给一个整数,这导致设置了错误标志,为什么不将选择更改为字符,并测试字符而不是整数。谢谢,它与Chubsdad的解决方案一起工作:我希望我能+1。