第一次发帖,如果我违反协议,我深表歉意。
我正在为学校制定一个愚蠢的计划,我有以下代码。
cout << "//Dictionary Program//\n\n";
cout << "Enter a command:\n's' - to search for a pattern at the beginning\n";
cout << "'e' - to search for a pattern at the end\n";
cout << "'c' - to search for a pattern anywhere in the word\n";
//Gather user input.
cout << "Please enter a command ('q' to quit): ";
cin >> userCommand;
cmdCheck = userCommand.find("secq");
while(cmdCheck < 0 || userCommand.length() > 1){
cout << "Please enter a valid command\n";
cin >> userCommand;
cmdCheck = userCommand.find("secq");
}
这正在驱动一个菜单,我正在尝试验证输入。它应该是一个字母,并且是以下“secq”之一
我在即时窗口中使用 string.find() 的时间很糟糕。我最终得到 CXX0047:错误:参数列表与函数不匹配。我根本不明白,因为我在其他地方使用它。
while 条件对我不好。当我给程序一个“v”时,它会像它应该的那样在块内结束,但是我给它一个“s”,其中 cmdCheck 应该评估为 0,但它给出一个 -1 并留在块内。
最后,我用 cmdCheck 编写了另一个错误,但我在 while 条件下遇到了这个错误,它也不起作用。
while(userCommand.find("secq") < 0 ...
我最初的想法是输入缓冲区有问题,但是当我在 Locals 窗口中查看 userCmd 变量时,我有一个大小为 1 的字符数组。缓冲区中只有字母,没有垃圾(据我所知)
我知道我可以绑一堆|| 与每个命令一起,但在我看来这更优雅一些。我看了我去年的期末考试,我的条件很丑。在这一点上,这更像是一个原则问题。