繁体   English   中英

C ++'==':没有从'int'到'std :: string'的转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM