关于Z^问题……

qiudou1987 2009-02-20 09:28:20
#include <iostream>
#include <vector>
//将vector内容复制给int数组;
using namespace std;
int main()
{
vector<int> num;
int n;
while(cin>>n) //需要Ctrl+Z 结束输入。
num.push_back(n);
int *num_copy=new int[num.size()];
int *num_cp=num_copy;
for(vector<int>::size_type i=0;i!=num.size();++i,++num_cp)
{
*num_cp=num[i];
cout<<*num_cp<<" ";
}

delete [] num_cp;
return 0;
}


当我运行时,发现需要二次Ctrl+Z才能结束输入,这是为什么?当我手动输入Z^时就能一次结束
谢谢大虾帮忙解惑。。。



输入:
1
2
3
4
Z^
运行结果:1 2 3 4 Press any key to continue

输入:
1
2
3
4
z^(Ctrl+Z)
z^(Ctrl+Z)
运行结果:1 2 3 4 Press any key to continue
另外我用的是:VC6.0!!
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 feng4206yu 的回复:]
在前面有输入的情况下,第一次输入z^,作用相当于使缓冲中断...第二次输入才是结束输入...
如果前面没有输入,那么输入一下z^就会结束输入...
这里有前几天一个提问帖子,里面一篇文章讲的还行...
http://topic.csdn.net/u/20090217/19/f3c4082d-a40d-4edc-9a61-81f05247ce65.html
[/Quote]
可以揭帖了,前几天刚看讨论过。
feng4206yu 2009-02-20
  • 打赏
  • 举报
回复
输入:1 2 3 4ij
输出:1 2 3 4
输入"i"时,因为在程序中的变量n的类型是int,所以当输入字符i的时候流状态改变了,这个
时候while(cin>>n)为假,所以输入循环结束了,不需要ctrl+z也可以结束.....
feng4206yu 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aqqiu 的回复:]
引用 3 楼 feng4206yu 的回复:
在前面有输入的情况下,第一次输入z^,作用相当于使缓冲中断...第二次输入才是结束输入...
如果前面没有输入,那么输入一下z^就会结束输入...
这里有前几天一个提问帖子,里面一篇文章讲的还行...
http://topic.csdn.net/u/20090217/19/f3c4082d-a40d-4edc-9a61-81f05247ce65.html

谢谢,那么直接输入Z和^(Shift+6),为什么就不用再次输入回车了呢?
[/Quote]
哈哈,这可与Z^(ctrl+z)没什么直接关系,因为输入的Z和^不是int,使得流状态改变,所以造成了结束输入一样的效果..
qiudou1987 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 feng4206yu 的回复:]
在前面有输入的情况下,第一次输入z^,作用相当于使缓冲中断...第二次输入才是结束输入...
如果前面没有输入,那么输入一下z^就会结束输入...
这里有前几天一个提问帖子,里面一篇文章讲的还行...
http://topic.csdn.net/u/20090217/19/f3c4082d-a40d-4edc-9a61-81f05247ce65.html
[/Quote]
谢谢,那么直接输入Z和^(Shift+6),为什么就不用再次输入回车了呢?
feng4206yu 2009-02-20
  • 打赏
  • 举报
回复
在前面有输入的情况下,第一次输入z^,作用相当于使缓冲中断...第二次输入才是结束输入...
如果前面没有输入,那么输入一下z^就会结束输入...
这里有前几天一个提问帖子,里面一篇文章讲的还行...
http://topic.csdn.net/u/20090217/19/f3c4082d-a40d-4edc-9a61-81f05247ce65.html
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 aqqiu 的帖子:]
#include <iostream>
#include <vector>
//将vector内容复制给int数组;
using namespace std;
int main()
{
vector <int> num;
int n;
while(cin>>n) //需要Ctrl+Z 结束输入。
num.push_back(n);
int *num_copy=new int[num.size()];
int *num_cp=num_copy;
for(vector <int>::size_type i=0;i!=num.size();++i,++num_cp)
{
*num_cp=num[i];
cout < <*num_cp < <" ";
}


[/Quote]
不会吧
ctrl+z 然后按回车 就可以了啊
qiudou1987 2009-02-20
  • 打赏
  • 举报
回复
补充:delete [] num_cp应该是delete [] num_copy
不好意思~~~

65,211

社区成员

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

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