[英]C++ '==': no conversion from 'int' to 'std::string'
我正在进行一项任务,到目前为止,我正在询问用户是否想先去。 我想检查他们的输入,以确保它匹配我想要的两个值。
我在使用Visual Studio时收到有关转换的错误,例如:
'==':没有从'int'转换为'std :: string'
没有运算符“==”匹配这些操作数
非常感谢任何支持。
你的问题在于:
if (turnChoice == 'yes' || turnChoice == 'no')
C ++和C用单引号表示单个字符,而不是字符串。 因此,编译器尝试将单引号转换为整数值。 您必须对字符串文字使用双引号。 所以将上面的行改为:
if (turnChoice == "yes" || turnChoice == "no")
问题在于: if (turnChoice == 'yes' || turnChoice == 'no')
你应该在字符串周围使用双引号,如下所示: if (turnChoice == "yes" || turnChoice == "no")
。
补救措施很简单:你需要将'yes'
和'no'
改为"yes"
和"no"
,因为后两者是带有隐式nul-terminator的字符串文字 。
但是让我们考虑一下编译器发出错误的原因。
单引号用于表示字符文字 。 也许令人惊讶的是,允许实现允许包含多个 char
字符文字:
C11 ++标准,§2.14.3/ 1 - 字符文字
包含多个c-char的普通字符文字是多字符文字。 多字符文字具有int类型和implementation-de fi ned值。
所以'yes'
和'no'
有int
类型。 由于std::string
类不允许赋值给int
类型,因此它会发出您看到的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.