error C2678: 二进制“>>”: 没有找到接受“std::istream”类型的左操作数的运算符(或没有可接受的转换)

voidsearch(void){intname[18]={0};char*pcard=NULL;cout<<"请输入所要查询的卡号:";cin>>name;pcard=... void search(void)
{
int name[18]={0};
char* pcard= NULL;
cout<<"请输入所要查询的卡号:";
cin>>name;
pcard=searchcard(name);
cout<<"查询到的卡信息如下"<<endl;
cout<<"卡号"<<setw(8)<<"余额"<<setw(8)<<"状态"<<setw(8)<<"累计使用"<<setw(12)<<"使用次数"<<setw(12)<<"上次使用时间"<<endl;
展开
 我来答
帐号已注销

2020-11-13 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.7万
采纳率:80%
帮助的人:885万
展开全部
机器抽象被破坏:建议直接 terminate
代码 bug:建议使用 Contracts(默认 terminate)
OOM:建议用 new(nothrow) 和 try_ 系列函数
可恢复的错误:建议抛异常或者返回错误码
部分成功:建议当作成功
C/C++ 语言都是基于一台抽象机器定义的,如果这样的抽象被破坏根本没得玩,只能退出。例子是「栈」耗尽:你不可能避免、也不可能解决。

代码 bug 就是类似「前置条件不满足」的情况,C/C++ 传统上的处理办法是「需要满足某某条件,如果不满足是未定义行为」(C++ 一度误入 OO 歧途跟风搞出 std::invalid_argument 这种就让它随风而去吧),用户代码一般推荐 assert。提案中建议统一交给 Contracts 处理我觉得非常好,因为这样的函数不会涉及未定义行为,同时违反时会有明确的报错信息,对懒人友好。

「部分成功」即类似「传给 snprintf 的缓冲长度不够用」这种,只要有良好的文档定义此时的行为,这种情况完全可以当作成功,而不是错误。

剩下的两个就是大头:「异常 / 错误码」和「OOM」。
听不清啊
高粉答主

2020-11-13 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
如果出现了“没有找到接受“std::istream”类型的左操作数的运算符(或没有可接受的转换)”这样的出错提示,请检查程序形状包含的头文件的文件名有没有打错:应该是iostream,而不是istream。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
威震四海和八荒
2018-07-22
知道答主
回答量:4
采纳率:0%
帮助的人:3147
展开全部
cin>>name是不行的
得cin>>name[xxx]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式