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;
}
因此,每当我得到这段代码时,就像它自动按下return,并“跳过”getline()函数(AKA,转到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()
代码,而另一个则不会。
我们很高兴能够得到解决方案和一些解释。
答案 0 :(得分:0)
以下适用于我:
#include <iostream>
#include <string>
int main() {
std::string str;
start:
std::cout << "prompt:\n";
std::getline(std::cin, str);
if (0 < str.length() && str.length() < 20) {}
else {
std::cout << "invalid.\n";
goto start;
}
std::cout << "input: \"" << str << "\"\n";
}
你们与此有什么不同?