| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:输入输出流的一个简单问题,请各位帮个忙,谢谢了
只看楼主 加入收藏
lovecsky
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-4-22
收藏
 问题点数:0 回复次数:4 
输入输出流的一个简单问题,请各位帮个忙,谢谢了
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main(void)
{
char ch;
cout<<"按下一个字符:";

ch=getche(); //为什么此种输入方式先于cout执行,非缓冲的
//ch=cin.get(); //而此种缓冲输入的方式结果如愿
//ch=getchar(); //这种方式也有问题,知道正确的方式,但想知道这样为什么有问题,和ch=cin.get()相比

cout<<endl<<"你输入的字符是:"<<ch<<endl;
}


希望的输出结果:
/*
按下一个字符:m

你输入的字符是:m
*/
搜索更多相关主题的帖子: 简单问题 输出 输入 
2007-05-04 00:16
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
以下是引用lovecsky在2007-5-4 0:16:23的发言:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main(void)
{
char ch;
cout<<"按下一个字符:"<<flush; //可以达到你预期的效果了吧,

ch=getche(); //为什么此种输入方式先于cout执行,非缓冲的
//ch=cin.get(); //而此种缓冲输入的方式结果如愿
//ch=getchar(); //这种方式也有问题,知道正确的方式,但想知道这样为什么有问题,和ch=cin.get()相比

cout<<endl<<"你输入的字符是:"<<ch<<endl;
}


希望的输出结果:
/*
按下一个字符:m

你输入的字符是:m
*/

可标准输出流 (cout) 能用于应用程序或 - 动态链接库 (DLL) 来显示信息。同时, 使用应用程序和 DLL 中 cout 时特别注意需要确保文本显示被同步。
cout 流开发与 Microsoft C/C++, 应用程序中是缓冲。 换句话说, 发送到 cout 流信息屏幕上似乎直到其缓冲区被刷新。你的问题应该就在这吧。
cout 类用于缓冲系统数据, 通过使用 endl manipulator 问题可以避免, 但是。 当附加到末尾 cout 调用, endl manipulator 插入换行符并再刷新缓冲区。 endl=flush+“\n”;


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-05-04 00:47
lovecsky
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-4-22
收藏
得分:0 
对,版主修改的地方我原来也加了个刷新缓冲区语句,cout.flush();来迫使cout输出,但是不加刷新语句,ch=cin.get()这个函数却可以正确输出。 我觉得ch=cin.get()和ch=getche()没多大差别,除了头文件外。
谢谢版主热心帮忙。
2007-05-04 01:37
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
以下是引用lovecsky在2007-5-4 1:37:36的发言:
对,版主修改的地方我原来也加了个刷新缓冲区语句,cout.flush();来迫使cout输出,但是不加刷新语句,ch=cin.get()这个函数却可以正确输出。 我觉得ch=cin.get()和ch=getche()没多大差别,除了头文件外。
谢谢版主热心帮忙。

cin.get和getche应该是有区别的,cin.get 很明显使用了标准输出流,有缓冲,与cin>>ch在实现的方法上是一样的;而getche没有使用标准输出流无缓冲


try new catch
2007-05-05 17:48
lovecsky
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-4-22
收藏
得分:0 
我是说两者在使用方法上,头文件不同就应该决定了是否使用了标准流。
getche()是无缓冲显示的,cin.get()是缓冲显示。谢谢楼上的,不过我有一点不明白,为什么要执行完ch=getche(),才开始执行cout,还有ch=getchar()也是。
请楼上的帮忙看一下。
2007-05-05 22:05
快速回复:输入输出流的一个简单问题,请各位帮个忙,谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032120 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved