为什么它重复5次?
Why it repeats 5 times?
void firstSentence(void){
string incorrectSentence;
string correctSentence = "I have bought a new car";
cout << "Your sentence is: I have buy a new car" << endl;
cout << "Try to correct it: ";
cin >> incorrectSentence;
if(incorrectSentence == correctSentence){
cout << "Goosh. Your great. You've done it perfectly.";
}
else{
firstSentence();
}
}
这是我要在我的程序中调用的函数。但是我被困住了,很生气,因为我自己找不到解决办法。它的作用是,如果 "if statement" 中的条件为真,则我的输出不是我所期望的。输出重复5次“尝试更正。你的句子是:我买了一辆新车..
为什么它正好重复 5 次等等,这是怎么回事,为什么它不起作用?
这个:
cin >> incorrectSentence;
不读取一行,而是读取一个以空格分隔的标记。如果您输入的是正确的句子,这意味着第一次它会读取 "I"
,而句子的其余部分保留在输入流中。该程序正确地确定 "I"
与 "I have bought a new car"
不同,然后循环并第二次读取 "have"
。这也和正确的句子不一样,所以又循环了一遍"bought"
。这一直持续到从流中读取所有内容,此时 cin >> incorrectSentence;
再次阻塞。
解决方法是使用
getline(cin, incorrectSentence);
...读取一行。
void firstSentence(void){
string incorrectSentence;
string correctSentence = "I have bought a new car";
cout << "Your sentence is: I have buy a new car" << endl;
cout << "Try to correct it: ";
cin >> incorrectSentence;
if(incorrectSentence == correctSentence){
cout << "Goosh. Your great. You've done it perfectly.";
}
else{
firstSentence();
}
}
这是我要在我的程序中调用的函数。但是我被困住了,很生气,因为我自己找不到解决办法。它的作用是,如果 "if statement" 中的条件为真,则我的输出不是我所期望的。输出重复5次“尝试更正。你的句子是:我买了一辆新车..
为什么它正好重复 5 次等等,这是怎么回事,为什么它不起作用?
这个:
cin >> incorrectSentence;
不读取一行,而是读取一个以空格分隔的标记。如果您输入的是正确的句子,这意味着第一次它会读取 "I"
,而句子的其余部分保留在输入流中。该程序正确地确定 "I"
与 "I have bought a new car"
不同,然后循环并第二次读取 "have"
。这也和正确的句子不一样,所以又循环了一遍"bought"
。这一直持续到从流中读取所有内容,此时 cin >> incorrectSentence;
再次阻塞。
解决方法是使用
getline(cin, incorrectSentence);
...读取一行。