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

C++新手,希望帮忙解答

孙惠 发布于 2010-10-26 22:17, 535 次点击
各位大侠,我是新手,有问题想请教你们啊。下面程序红色的地方,为什么从键盘输入数字时输入-1或Ctrl+z 等都跳步出来
#include<iostream>
#include<vector>
using namespace std;
int main()
{   const array_size=20;
    int word;
    vector<int> ivec;
    cout<<"enter numbers:(Ctrl+z to end)"<<endl;
     while(cin>>word)
         ivec.push_back(word);
    int *p=new int[ivec.size()];
    int *q=p;
    for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++q,++iter);
    *q=*iter;
      return 0;
}
     
            
   
3 回复
#2
m21wo2010-10-26 22:55
Ctrl+z是windows的终止符!
如果输入的字符为不是有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D)就会退出,
#3
tornador2010-10-26 23:30
是这样的,cin不只是个简单的输入。它有返回值,就是检查输入流的状态。就如上面所说,如果输入的字符不是有效字符,就是会返回-1.
#4
2010-10-27 13:56
楼主说的是跳不出来

看了一眼你的程序  

int word;

cin >> word;     输入一个整型     那么-1肯定是没问题了  因为-1也是个有符号整型常量

输入Ctrl + z应该是会跳出循环的   

楼主输入字符  应该也是可以跳出循环的


但是最好不要这样写代码  如果非得写  那你就在循环外   把cin流的状态设置回来  cin.clear(); 默认值是0

最好在把缓冲区忽略一下    这样以免后续代码出问题

1