C++使用>=运算符报错:std::string与int比较无匹配操作符
C++字符串与整数比较编译报错解决方案
报错原因
编译器返回错误no operator ">=" matches these operands -- operand types are: std::__cxx11::string >= int的核心原因是:你所定义的customers结构体中,cpower数组的元素类型为std::string字符串类型,C++标准库未提供字符串与整数直接使用>=比较的运算符重载,因此代码中直接执行比较操作触发编译错误。
修复方案
根据实际业务场景可选择两种修复方案:
- 若
cpower数组确实需要存储字符串格式的数值:在比较前先将字符串转为数值类型,调用stoi(转整型)或stol(转长整型)即可,判断逻辑修改为:
if (stoi(PowerChecker.cpower[a]) >= 999
- 若
cpower数组本质是存储数值类战力值:直接修改customers结构体中cpower数组的元素类型为int或其他数值类型,从根源避免类型不匹配问题。
修复后完整代码示例
customers InputChecker(struct customers PowerChecker) { for (int a = 0; a < 4; a++) { // 采用字符串转数值的方案修改后代码 if (stoi(PowerChecker.cpower[a]) >= 999) { cout << "Please re-specify the power of your character" << PowerChecker.cpower[a] << endl; cout << "Power should not exceed limit 999" << endl; } } return PowerChecker; }
内容的提问来源于stack exchange,提问作者Abdul raheem
相关产品推荐
相关产品推荐

