cout << "Type in your third message below:\n";
getline(cin, msgth);
if (msgth.length() > 0 && msgth.length() < 500) {}
else
{
system("cls");
cout << "Your message has to be between 1 and 500 characters long...";
goto prot;
}
所以,每当我看到这段代码时,就像它会自动按下回车键,并“跳过”getline() 函数(又名,转到prot
标签)。由于某种原因,同样的事情发生在更远的地方。但是,经过一番试验,我发现在使用它时:
input:
if (special == 0)
{
cout << "Choose your input message below:\n";
getline(cin, inp);
if (inp.length() > 0 && inp.length() < 500) {}
else
{
system("cls");
cout << "Your message needs to be between 1 and 500 characters long\n";
goto input;
}
}
它确实在第二次起作用(换句话说,在进入input
标签之后)。这两个代码之间的区别在于,第一个std::cin
代码必须在返回之前绕过代码getline()
,而另一个则不需要。
一个解决方案和一些解释将不胜感激。