gpt4 book ai didi

C++递归重复输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:23 26 4
gpt4 key购买 nike

我有这个代码:

#include <iostream>
#include <vector>
#include <ctime>
#include <math.h>
#include <string>

using namespace std;

int main()
{
srand(time(0));
string command_one;
int slot;
cout<<"One chip or Quit?\n";
getline(cin, command_one);
if(command_one=="One chip"){
cout<<"Pick a slot between 0 and 8 (inclusive)\n";
cin>>slot;
if(slot>=0 and slot<=8){
double position=slot;
}
else{
cout<<"This Option is invalid!\n";
main();
}
}
else if(command_one=="Quit"){
cout<<"Have a nice day! :D";
}
else{
cout<<"This Option is invalid!\n";
main();
}
}

当它遇到嵌套在 if(command_one=="One chip") 中的 else 循环时,它返回

"此选项无效!
一个芯片,多个芯片,还是退出?
此选项无效!
一个芯片,多个芯片,还是退出?”

但应该是:

"此选项无效!
一个芯片,多个芯片,还是退出?”

如何解决?

最佳答案

cin>>slot;

这会将换行符留在流缓冲区中的数字后面。下一次调用 getline 会发现,给出一个空行。

您可以使用 ignore忽略换行符和行尾的任何其他垃圾:

cin.ignore(-1, '\n'); // ignore any number of characters up to and including new-line

请注意,调用 main 是不允许的(尽管某些编译器可能允许);像这样的无限递归最终可能会导致堆栈溢出。考虑改用循环。

关于C++递归重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25769340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com