You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++使用getline为结构体成员输入字符串时类型不匹配报错原因求解

错误原因

  • 结构体StudentData的name成员定义错误:string name[50]的语法是声明包含50个std::string元素的数组,并非单个字符串变量。
  • std::getline函数的第二个参数要求传入单个std::string类型的引用,你传入的是string数组的首地址,两者类型完全不匹配,因此触发编译器的类型不匹配报错,报错信息中提到的std::string [50]就是你定义的name成员的实际类型。

修复方法

直接将name成员修改为单个std::string类型即可,这是C++处理字符串的标准方案,无需预先定长,适配getline的参数要求:

struct StudentData {
  string name; // 修改为单个std::string对象
  char rollNo[20];
  int semester;
};

修改完成后原代码的getline语句就可以正常运行。

额外注意事项

如果后续调整输入顺序,先通过cin输入数字/字符数组,再调用getline读字符串,需要先调用cin.ignore()清理输入缓冲区残留的换行符,避免getline读到空内容。


内容的提问来源于stack exchange,提问作者Laxman Chinannavar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:00:03