C++中Ctrl+Z是怎么结束输入的?

#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>ivec;intival... #include<iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> ivec;
int ival1,ival2;
while(cin>>ival1)
ivec.push_back(ival1);
for(vector<int>::size_type index=0;index!=ivec.size();++index)
cout<<ivec[index]<<' ';
cout<<endl;
cin>>ival2;
cout<<"ival2="<<ival2<<endl;
system("pause");
return 0;
}
输入vector中的元素时按Ctrl+Z结束,程序就不能输入ival2而是直接输出一个错误的值,这是为什么?
展开
 我来答
娱乐小八卦啊a
高粉答主

2020-03-06 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117852

向TA提问 私信TA
展开全部

ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。

Ctrl+Z:一般用于输入字符串时,比如下面这个程序。

#include <iostream>  

#include <vector>

#include <string>

using namespace std;

int main(){

    vector<string> a;

    string tmp;

    while (cin>>tmp){

        a.push_back(tmp);

    }

    for (vector<string>::iterator iter = a.begin(); iter != a.end(); ++iter){

       cout << *iter << endl;

    }

    return 0;

}

扩展资料

C语言中whlie跳出循环的结束方式:

1、break关键字

讲到了break,用它来跳出 switch 语句。当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;语句,结束循环。在多层循环中,一个 break 语句只向外跳一层。

2、continue语句

continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。

程序遇到while时,变量c的值为'\0',循环条件c!='\n'成立,开始第一次循环。getchar() 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。

八哥说科技
高粉答主

2020-03-05 · 分享科技资讯,共享科技生活
八哥说科技
采纳数:113 获赞数:78618

向TA提问 私信TA
展开全部

在微软的DOS和Windows中,“Ctrl+Z”输入的是EOF符号,就是 C++中标准输入的结束符号。

例如标准输入函数scanf函数返回成功读入的数据项数,读取数据时遇到了“文件结束”则返回EOF。如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

扩展资料:

EOF的应用:

档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。

C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。

在 UNIX中, EOF表示能从交互式 shell (终端) 送出 Ctrl+D (习惯性标准)。在微软的 DOS 与 Windows 中能送出 Ctrl+Z。在某些例子处理纯文字档案或从"字元设备"读入资料。

参考资料来源:百度百科-scanf

参考资料来源:百度百科-EOF

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengs123456
2010-04-24 · 超过11用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
同意2楼的说法,在利用while(cin >> ival1)连续输入数据时,在接受到Ctrl+Z时结束,即是遇到文件结束符EOF,在VS下是Ctrl+D,此时输入流cin处于错误状态,无法正确读取数据。必须恢复输入流cin的有效状态,即是加上cin.clear()(二楼所说位置添加即可),这样一来,输入流就可以正确读取数据了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huifeng00
推荐于2017-11-23 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:707万
展开全部
#include<iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> ivec;
int ival1,ival2;
while(cin>>ival1,!cin.eof())
ivec.push_back(ival1);
for(vector<int>::size_type index=0;index!=ivec.size();++index)
cout<<ivec[index]<<' ';
cout<<endl;
cin.clear();
cin>>ival2;
cout<<"ival2="<<ival2<<endl;
system("pause");
return 0;
}
程序如上。你加个
cin.clear();
就可以了。就是你Ctrl+Z结束输入后,可以输入下个值了。
这个函数主要是回复有效状态。
Ctrl+Z是文件结束符。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinsong1zhang
2010-04-24 · TA获得超过532个赞
知道小有建树答主
回答量:409
采纳率:0%
帮助的人:358万
展开全部
那是你那个循环结束的标志
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式