BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84258同步于 2014/11/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

OJ上一道题

Li8630
2014/11/23镜像同步2 回复
我最近在刷题,链接如下:http://ac.jobdu.com/problem.php?pid=1135 我写的代码如下: #pragma warning(disable:4786) #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; bool cmp(string x,string y) { return x.size()<y.size(); } int main() { int n,i; while(cin>>n&&n) { cin.ignore(); vector<string> vc; vc.reserve(n); string str; for(i=0;i<n;i++) { getline(cin,str); cout<<str<<endl; if(str.compare("stop")==0) break; vc.push_back(str); } sort(vc.begin(),vc.end(),cmp); for(vector<string>::iterator i=vc.begin();i!=vc.end();i++) cout<<*i<<endl; } return 0; } 我的问题是:在for循环中,比如说我第一次cin输入了某个字符串存入了str中,然后执行下一行,按理说应该将str的内容打印出来,可是并没有达到预期的结果,而是程序在我第二次进入for循环,才把第一次for循环形成的str打印出来。也就是第二次for循环打印第一次的str,第三次for循环打印第二次的str,以此类推,这是为什么呢?求大神指点~谢谢
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
gluowei机器人#1 · 2014/11/28
我跑你的代码没出现这个问题 无脑猜测是cin.ignore的锅
Li8630机器人#2 · 2014/11/28
vc 6.0 上会出错 其他平台没事 【 在 gluowei 的大作中提到: 】 : 我跑你的代码没出现这个问题 : 无脑猜测是cin.ignore的锅