Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++;cin输入不工作?_C++ - Fatal编程技术网

C++ c++;cin输入不工作?

C++ c++;cin输入不工作?,c++,C++,原因很简单 当您执行cin>>任何操作时,都会留下一个\n(它是在您按Enter键时添加的)。默认情况下,getline一直读取到下一次\n,因此下一次读取将只读取一个空字符串 解决方案是放弃该\n。您可以这样做: Car #2 Please enter the make: Please enter the year made: cin.ignore(数值限制::max(),'\n'); 就在cin>>carNum之后 在每次使用插入运算符调用cin后,不要忘记包括限制,以便使用数值限制。如

原因很简单

当您执行
cin>>任何操作时,都会留下一个
\n
(它是在您按Enter键时添加的)。默认情况下,
getline
一直读取到下一次
\n
,因此下一次读取将只读取一个空字符串

解决方案是放弃该
\n
。您可以这样做:

Car #2
Please enter the make: Please enter the year made:
cin.ignore(数值限制::max(),'\n');
就在
cin>>carNum
之后


在每次使用插入运算符调用cin后,不要忘记包括
限制
,以便使用
数值限制

。如果希望
cin.getline()
工作,必须调用
cin.ignore()

由于cin>>在按enter键时会留下一个“\n”字符,因此在使用getline()时会拾取
\n
并且不接受任何输入,因为它在作为默认分隔符的输入流中找到了
\n


因此,您可以在每个cin>>之后执行
cin.ignore()
,或者简单地设置一个分隔符
cin.getline()

跳过是什么意思?当您说“刚刚跳过”时,您需要更加清楚。几乎可以肯定代码正在被执行。请描述一下症状是车[i]。型号总是空的吗?哦,是的。我也可以做
(cin>>carNum.get()
或者如果你不想变得令人讨厌的迂腐,你可以写一个相当大的数字,而不是数字限制之类的废话。Zac如果你不是迂腐的操作系统,代码会在某个时候崩溃。“这可能不重要,因为程序很简单,但我们需要鼓励学究式的习惯,而不是轻蔑,因为总有一天我会很重要的。”ultimate buster。如果我现在输入'34',你的get读取空格,代码中断,会发生什么。
Car #2
Please enter the make: Please enter the year made:
cin.ignore(numeric_limits<streamsize>::max(),'\n');