int main()
{
char i;
while((i = cin.get()) != EOF)
{
cout<<i<<endl;
}
return 0;
}
使用ctrl+z模拟流结束时,出现此种现象,还请知道的人不吝赐教,分多无用,顺便散了,见者有分。
123^Z456
1
2
3
输入123 ctrl+z 456 回车。最后那个箭头怎么来的,整形是26,为什么是箭头?
17 个解决方案
#1
sf
JF
JF
#2
jf
#3
先JF
#4
晕,自己先顶。有没有牛来啊。。。。
#5
VC6而且没打sp6补丁?
#6
我用的是VS2008
#7
jf
#8
因为流结束的比较标准的方法是回车-ctrl-z-回车。
否则,后果未可知。
你应该注意到你的程序并不能自己结束吧。
否则,后果未可知。
你应该注意到你的程序并不能自己结束吧。
#9
不清楚
JF
JF
#10
ctrl+z是阻塞方式的检验,即需要回车之后才能够出现效果。
(1)如果ctrl+z之前没有任何的输入,这时输入ctrl+z才起到将EOF写入到缓冲区中。进而使得get()读取并返回。
(2)如果ctrl+z有任何的输入,这时候的作用是使得ctrl+z之前的数据写入缓冲区,而使得ctrl+z之后的数据采取无视的态度。(ctrl+z的效果1)
这其中就有在第二种情况之中,系统是怎么对待ctrl+z的,这里似乎是将箭头写入到缓冲区之中去了。(ctrl+z的效果2)
当所有输入的有效数据输出之后,系统等待下一次输入,也就是你讲的程序并没有结束。
令我很费解的就是为什么会是箭头,无语啊。
#11
为什么不是箭头呢?你用wxdevcpp编译试一下就知道了。
#12
估计和操作系统和编译器有关吧
#13
jf
#14
gcc
vc6.0测试
123^Z456
1
2
3
并没有->
vc6.0测试
123^Z456
1
2
3
并没有->
#15
ok,感谢各位。初步估计,又是一个与编译器有关的问题。
#16
等高人
#17
丐帮少帮主来接分!
#1
sf
JF
JF
#2
jf
#3
先JF
#4
晕,自己先顶。有没有牛来啊。。。。
#5
VC6而且没打sp6补丁?
#6
我用的是VS2008
#7
jf
#8
因为流结束的比较标准的方法是回车-ctrl-z-回车。
否则,后果未可知。
你应该注意到你的程序并不能自己结束吧。
否则,后果未可知。
你应该注意到你的程序并不能自己结束吧。
#9
不清楚
JF
JF
#10
ctrl+z是阻塞方式的检验,即需要回车之后才能够出现效果。
(1)如果ctrl+z之前没有任何的输入,这时输入ctrl+z才起到将EOF写入到缓冲区中。进而使得get()读取并返回。
(2)如果ctrl+z有任何的输入,这时候的作用是使得ctrl+z之前的数据写入缓冲区,而使得ctrl+z之后的数据采取无视的态度。(ctrl+z的效果1)
这其中就有在第二种情况之中,系统是怎么对待ctrl+z的,这里似乎是将箭头写入到缓冲区之中去了。(ctrl+z的效果2)
当所有输入的有效数据输出之后,系统等待下一次输入,也就是你讲的程序并没有结束。
令我很费解的就是为什么会是箭头,无语啊。
#11
为什么不是箭头呢?你用wxdevcpp编译试一下就知道了。
#12
估计和操作系统和编译器有关吧
#13
jf
#14
gcc
vc6.0测试
123^Z456
1
2
3
并没有->
vc6.0测试
123^Z456
1
2
3
并没有->
#15
ok,感谢各位。初步估计,又是一个与编译器有关的问题。
#16
等高人
#17
丐帮少帮主来接分!