以下是示例代码应该执行的操作的解释(如教程中所示):
作为一个相当人为的例子,我们如何编写一个输出每
number from 1 to 100
的for循环,但如果用户输入字母q则停止?我们可以使用while循环轻松完成它,并使用我们上面学到的内容使其非常小,但是让它在for循环中进行
当我运行它时,我收到错误"No match for 'operator=='..."
。现在我研究了网络和SO本身,但似乎只有高级答案涉及我尚未学习的概念。
我提供了代码以及我研究过的一些链接。在其中一个sites上,它说“是的,基本上在C中,你不能使用==
来比较字符串”。在another site上,他们谈到了重载运算符,然后我也进行了研究,但这让我更加困惑。在similar problem here on SO一个人建议使用双引号而不是单引号,但我知道在我的情况下这不起作用,因为我使用了char
而不是const char
或{{1} }。我跑了它,我的怀疑得到了证实。它给出了一个错误:string
基本上我的问题是:
本教程中使用的此代码有什么问题,以及有哪些替代方法可以防止出错?
"Invalid conversion from const char to char"
答案 0 :(得分:2)
std::cin >> input;
返回对std::cin
的引用,毫无疑问,该引用无法与char
进行比较。你可能想要
if (std::cin >> input && input == 'a')
甚至更好,
if (!(std::cin >> input) || input == 'a')
如果阅读input
失败,也会中断。