gpt4 book ai didi

c++ - while 循环不等待方法完成

转载 作者:行者123 更新时间:2023-11-28 02:57:13 27 4
gpt4 key购买 nike

所以我已经有一段时间没有用 C++ 做任何事情了,但是我的 while 循环出现了一个非常奇怪的行为。它旨在允许用户执行无限数量的命令,并根据字符串的内容确定要执行的命令。

这里是感兴趣的代码:

    string run;
size_t found;
bool understood;
while (true)
{
run = "";
found = string::npos;
cout << "Please enter command(s)" << endl;
cout << "\> ";
cin >> run;
found = run.find("convert");
cout << found << endl;
understood = false;
if (found != string::npos)
{
cout << "Converting DNA" << endl;
understood = true;
convert();
}
found = run.find("purify");
if (found != string::npos)
{
cout << "Purifying DNA" << endl;
purify();
understood = true;
}
found = run.find("build");
if (found != string::npos)
{
cout << "Building overlaps" << endl;
buildOverlaps();
understood = true;
}
found = run.find("close");
if (found != string::npos)
{
cout << "Goodbye" << endl;
break;
}
if (understood == false) cout << "I'm sorry, I didn't understand you" << endl;
}

我从原来的方法中移出,它只涉及 if string == "string"以便可以在同一行中执行多个命令。但是,当我运行这段新代码时,我得到了

Please enter command(s)
> run converter
(some long, nonzero, number)
I'm sorry, I didn't understand you
Please enter command(s)
> 0
Converting DNA

所以基本上,它似乎接受字符串,跳过 if block (最后一个除外),然后返回并执行适当的方法。一切正常,所以这只是一个小麻烦,但我想了解这种行为。

数字是找到的字符串索引的调试输出,在非测试执行中不存在。

最佳答案

如果你的输入是

> run converter

然后是你获取输入的方式

cin >> run;

对您不起作用(operator>> 在空格处中断)。第一次通过循环时,它将尝试找到一个“run”字符串,然后它会再次尝试找到一个“converter”字符串。如果你想处理整行,你应该这样做

std::getline(std::cin, run);

关于c++ - while 循环不等待方法完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713841/

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