一个C++小程序问题求高人指点一下

uestctsg 2009-03-22 01:26:16
#include<iostream>
#include<vector>
using namespace std;
main()
{vector<int> ivec1;
vector<int> ivec2;
int ival1;
cout<<"输入ivec1:"<<endl;
while(cin>>ival1)
{ivec1.push_back(ival1);
}
int ival2;
cout<<"输入ivec2:"<<endl;
while(cin>>ival2)
{ivec2.push_back(ival2);
}
vector<int>::size_type size1,size2;
size1=ivec1.size();
size2=ivec2.size();
bool result=true;
for(vector<int>::size_type ix=0;ix!=size1>size2?size2:size1;++ix)
if(ivec1[ix]!=ivec2[ix])
{result=false;
break;
}
if (result)
{
if(size1<size2)
{cout<<"ivec1是ivec2的前缀"<<endl;
}
else
if(size1>size2)
{cout<<"ivec2是ivec1的前缀"<<endl;
}
else
if(size1==size2)
{cout<<"ivec2=ivec1"<<endl;
}
}
return 0;
}

程序目的:确认两个数字序列是否是前缀关系
运行:
输入1 2 3 (一个字母)
就直接结束了。
输入1 2 3 (3个ctrl+z)
同样直接结束

疑问:
1、我感觉输入字母或者一个ctrl+z应该提示我再次输入才对呀。。。怎么能直接就结束了呢
2、为什么输入3个ctrl+z才结束啊,按理输入一个字母和一个ctrl+z应该是一样的效果吧
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuanzhaoxiang 2009-06-21
  • 打赏
  • 举报
回复
cin.clear()能放在.h文件里吗?
bqiangb 2009-04-08
  • 打赏
  • 举报
回复
up
donle1000 2009-04-08
  • 打赏
  • 举报
回复

#include <iostream>
#include <vector>
using namespace std;
main()
{
vector <int> ivec1;
vector <int> ivec2;
int ival1;
cout <<"输入ivec1:" <<endl;
while(cin>>ival1)
{
ivec1.push_back(ival1);
}
int ival2;
cin.sync();
cin.clear(); //记得刷新和清空缓冲区,不然接收的字符类型作为下次int类型变量的输入
cout <<"输入ivec2:" <<endl;
while(cin>>ival2)
{
ivec2.push_back(ival2);
}
cin.sync();
cin.clear();
vector <int>::size_type size1,size2, size;
size1=ivec1.size();
size2=ivec2.size();
bool result=true;
size = size1>size2?size2:size1;
for(vector <int>::size_type ix=0;ix!=size;++ix) //这里是一个操作数,如果照你那样写,这里是一个表达式
{
if(ivec1[ix]!=ivec2[ix])
{
result=false;
break;
}
}
if (result)
{
if(size1 < size2)
{
cout <<"ivec1是ivec2的前缀" <<endl;
}
else
if(size1>size2)
{
cout <<"ivec2是ivec1的前缀" <<endl;
}
else
if(size1==size2)
{
cout <<"ivec2=ivec1" <<endl;
}
}
return 0;
}
woshichangjiu 2009-04-08
  • 打赏
  • 举报
回复
又学了不少东西。
uestctsg 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
...注意,在输入错误的时候要,
cin.clear();
cin.sync();
[/Quote]
这两个是什么函数啊?没见过呢~
帅得不敢出门 2009-03-22
  • 打赏
  • 举报
回复
回车
ctrl+z
回车
这样才能结束
baihacker 2009-03-22
  • 打赏
  • 举报
回复
...注意,在输入错误的时候要,
cin.clear();
cin.sync();

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧