Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300670
  • 博文数量: 81
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 952
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-31 22:05
文章分类

全部博文(81)

文章存档

2011年(1)

2010年(1)

2009年(79)

我的朋友

分类: C/C++

2009-08-06 17:11:50

用成员函数put输出字符和put函数的连续调
   用put成员函数用于输出一个字符,例如语句:cout.put('A');将字符A显示在屏幕上。
   也可以像下面那样在一条语句中连续调用put函数:cout.put('A').put('\n');该语句在输出字符A后输出一个换行符。和<<一样,上述语句中圆点运算符(.)从左向右结合,put成员函数返回调用put的对象的引用。还可以用ASCII码值表达式调用put函数,语句cout.put(65)也输出字符A。

    成员函数ignore用于在需要时跳过流中指定数量的字符(默认个数是1),或在遇到指定的分隔符(默认分隔符是EOF,使得ignore在读文件的时候跳过文件末尾)时结束。
    成员函数putback将最后一次用get从输人流中提取的字符放回到输入流中。对于某些应用程序.该函数是很有用的。例如,如果应用程序需要扫描输入流以查找用特定字符开始的域,那么当输入该字符时,应用程序要把该字符放回到输入流中,这样才能使该字符包含到要被输入的数据中。
    成员函数peek返回输入流中的下一个字符,但并不将其从输入流中删除。

    调用成员函数read、write可实现无格式输入/输出。这两个函数分别把一定量的字节写入字符数组和从字符数组中输出。这些字节都是未经任何格式化的,仅仅是以原始数据形式输入或输出。
例如:
    char buffe[]  ="HAPPY BIRTHDAY";
    cout.write(buffer, 10  );
输出buffet的10个字节(包括终止cout和<<输出的空字符)。因为字符串就是第一个字符的地址,所以函数调用:
    cout.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ",10);
显示了字母表中的前10个字母。
    成员函数read把指定个数的字符输入到字符数组中。如果读取的字符个数少于指定的数目,可以设置标志位failbit
    成员函数gcount统计最后输入的字符个数。
    程序演示了类istream中的成员函数read和gcount,以及类ostream中的成员函数write。程序首先用函数read向字符数组buffer中输入20个字符(输入序列比字符数组长),然后用函数gcount统计所输入的字符个数,最后用函数write输出buffer中的字符。
3 #include
4
5 int main()
6 {
7   const int SIZE = 80;
8   char buffer[ SIZE ];
9
10  cout << "Enter a sentence:\n";
11  cin.read( buffer, 20 );
12  cout << "\nThe sentence entered was:\n";
13  cout.write( buffer, cin.gcount() );
14  cout << endl;
15  return 0;
16 }

输出结果:
Enter a sentence:
Using the read, write, and gcount member functions
The sentence entered was:
Using the read,write

-----------------------------------------------------------------------------------
    格式状态        说明
-----------------------------------------------------------------------------------
    ios::skipws     跳过输入流中的空白字符
    ios::left       在域中左对齐输出,必要时在右边显示填充字符
    ios:right       在域中右对齐输出,必要时在左边显示填充字符
    ios::internal   表示数字的符号应在域中左对齐,而数字值应在域中右对齐(即在符号和数字之间填充字符
    ios::dec        指定整数应作为十进制(基数10)值
    ios::oct        指定整数应作为八进制(基数8)值
    ios::hex        指定整数应作为十六进制(基数16)值
    ios::showbase   指定在数字疥面输出进制(0表示八进制,0x或0X表示十六进制)
    ios::showpoint  指定浮点数输出时应带小数点。这通常和ios::fixed一起使用保证小数点后面有一定位数
    ios::uppercase  指定表示十六进制Rx应为大写,表示浮点科学计数法的e应为大写
    ios::showpos    指定正数和负数前面分别加上正号或-号
    ios::scientific 指事实上浮点数输出采用科学计数法
    ios::fixed      指事实上浮点数输出采用定点符号,保证小数点后面有一定位数
-----------------------------------------------------------------------------------

cout.setf( ios::left, ios::adjustfield );
cout.unsetf( ios::left );
resetiosflags( ios::left )
设置填充字符(fill、setfill)

-----------------------------------------------------------------------------------

    无参数的成员函数flags只返回格式标志的当前设置(long类型的值)。带一个long类型参数的成员函数flags按参数指定的格式设置标志,返回以前的标志设置。flags的参数中未指定的任何格式都会被清除。


    交互式应用程序通常要分别用类istream和ostream输入和输出数据。当提示信息出现在屏幕上时,用户输入一个数据来响应。显然,提示信息必须在执行输入操作前出现。在有输出缓冲区的情况下,只有在缓冲区已满时、在程序中明确地刷新输出缓冲区时或因程序结束而自动刷新输出缓冲区时,输出信息才会显示到屏幕上。为保证输出要在下一个输入前显示,C++提供了成员函数tie,该函数可以实现输入/输出操作的同步,也就是把这两个操作“系在一起”。例如,函数调用:
    cin.tie(&cout);
把cout(ostream的对象)连到cin(istream的对象)上。实际上,C++为了建立用户的标准输入/输出环境而自动执行了这个操作,所以这个专门的调用其实是多余的。但是,用户可以显式地把其他配对的输入/输出流“系”在一起。使用函数调用:
    inputStream.tie(0);
可以从一个输出流中解开输入流inputStream。



阅读(995) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~