为什么这是"按Enter继续" C ++中的代码无法正常工作?

时间:2016-05-15 03:31:14

标签: c++ cout cin enter

所以,我正在为C ++中的孩子们制作一个简单的测验程序(我真的是编程的初学者)。我想要做的是要求用户在第一个问题后按Enter键,只有按回车键,才能看到第二个问题。但由于某些原因,C ++没有等待用户在cin语句中输入输出并自动打印下一个问题。

以下是代码:

############### Code Below ###################
<?php

echo "<table border = 0><tr><td align=left valign=center>";


echo "Please paste the file name below:</br>";
echo "<form method='POST' action='3.php'>";
echo "<input type = 'text' name='name'/>";
echo "<input type='submit' value='Submit'/>";
echo "</form>";
$path="/home/users/web/b1262/moo.mybidszcom/sandbox/";
$ending='.dat';
$name = $_POST['name'];
$file = ("$path$name$ending");
$file_contents = file_get_contents($file);

$fh = fopen($file, "w");
$file_contents = str_replace(']no[',']yes[',$file_contents);
fwrite($fh, $file_contents);
fclose($fh);

echo "</td><td></td></tr></table>";
?>

2 个答案:

答案 0 :(得分:1)

很可能你在ans / input(用一个单词)之后输入 Enter 。因此,当您按输入时,它会将 ans 字符串作为输入,并将以下换行视为分隔符。 因此,不会读取换行符并将其保留在输入缓冲区中,该缓冲区将自动作为下一个输入。也就是说, cin.ignore()忽略此换行符,控件转到下一条指令。

要解决此问题,请使用 cin.getline(ans) / getline(cin,ans)而不是 cin 或使用其他 cin.ignore()忽略下一个输入(“按Enter继续”)。

答案 1 :(得分:0)

您可能已输入&#34;输入&#34;在为ans提供一些数据之后。在这种情况下,cin.ignore()会读取&#34;输入&#34;并立即返回。因此,您需要另一个cin.ignore()等待另一个&#34;输入&#34;。