注册 登录
编程论坛 C++教室

C++ PRIMER里的一个关于VECTOR的作业 碰到些问题

sy_141618 发布于 2007-07-06 13:59, 888 次点击

#include <iostream>
#include <string>
#include <vector>
#include <cctype>

int main()
{
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
string s1;
vector<int> ivec;
int a;
while(cin >> a)
ivec.push_back(a);
if(ivec.size()%2==0)
for(vector<int>::size_type j=0;j!=ivec.size();j+=2)
cout << ivec[j]+ivec[j+1] << " ";
else if(ivec.size()%2==1)
{
cout << "Please enter the last number: ";
cin >> a; //就是在这里,为什么运行的时候就是不读数据,直接跳到下一行把这个a就推进去了?
ivec.push_back(a);
for(vector<int>::size_type j=0;j!=ivec.size();j+=2)
cout << ivec[j]+ivec[j+1] << " ";
}
return 0;
}

我的头文件多写了。。。因为在看书,所以不高兴每次筛选需要的头文件。。。
谢谢!

[此贴子已经被作者于2007-7-6 14:00:30编辑过]

10 回复
#2
sy_1416182007-07-06 15:57
。。。
#3
aipb20072007-07-06 16:23
cin在第一次推出循环的时候被设置成错误流了。

在后一个cin前加上:
cin.clear();
cin.ignore();

primer后面章节有讲,应该是标准库输入输出吧。
#4
sy_1416182007-07-06 16:27

好深奥的诺。。。什么错误流啊~~
出书的人咋不厚道列,知道我们不还没学就把作业给写出来了
谢谢

#5
aipb20072007-07-06 16:33
呵呵~,不是他不厚道,是他没想到你要用while(cin >> )这样的表达。
你要推出这个循环,就是使这个流cin被设置上failbit或者eofbit,这样你再去用cin就不成功了。

GOOD LUCK
#6
sy_1416182007-07-06 17:14
WISH ME GOOD LUCK~
高考考完了,终于有时间潜心研究这本厚厚的宝典了!
being excited...
#7
leeco2007-07-07 18:51
回复:(sy_141618)WISH ME GOOD LUCK~高考考完了,终...
报的什么学校什么专业啊?
#8
sy_1416182007-07-07 22:05
额~我报的是同济。。估计落榜了T。T
#9
sy_1416182007-07-07 22:06
现在上大了吧~~哎
#10
zhufeng7142007-07-07 22:32

我的解答:
着可能与你的STL实现有关,在读入数据的时候向缓冲区读取数据,来减少IO繁忙,或许cin的flush()可以解决问题.

#11
sy_1416182007-07-07 23:02

NO懂 T。T

1