C++作业代码出现std::string相关报错无法解决,寻求排查帮助
C++代码报错修复方案
核心错误原因
- if条件判断中误用赋值运算符
=代替相等比较运算符==。C++中if判断需要接收bool类型的返回值,而packageCode=AKFM101是赋值操作,返回值为赋值后的string对象,无法自动转换为bool类型,就是你遇到的类型转换报错的直接诱因。 - 你将
AKFM101、ADFM102、KDFM103声明为了未赋值的string变量,你实际要匹配的是固定的字符串常量,不需要单独声明这类变量,直接使用双引号包裹的字符串字面量做比较即可。 - 第一个
if条件末尾多写了分号;,会导致后续的赋值语句不受if条件控制,无论判断结果是否成立都会执行。
修复后可正常运行的代码
#include <iostream> #include <string> using namespace std; int main() { string packageCode, packageCode1, packageCode2, packageCode3, maskColour; int quantity_set_of_mask; cout << "Enter Package Code [AKFM101 , ADFM102 , KDFM103] = "; cin >> packageCode; if (packageCode == "AKFM101") packageCode1 = "AKFM101"; if (packageCode == "ADFM102") packageCode2 = "ADFM102"; if (packageCode == "KDFM103") packageCode3 = "KDFM103"; cout << "Enter Quantity Set Of Mask = "; cin >> quantity_set_of_mask; cout << "Enter Mask Colour [Blue , Yellow] = "; cin >> maskColour; return 0; }
优化建议
你可以直接复用packageCode变量做后续逻辑判断,不需要额外声明packageCode1/packageCode2/packageCode3三个变量,同时可以用else if代替多个独立if,减少不必要的重复判断。
内容的提问来源于stack exchange,提问作者A_H
相关产品推荐
相关产品推荐

