码迷,mamicode.com
首页 > 编程语言 > 详细

c++IO之标准设备操作流

时间:2014-08-11 12:02:12      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

每种语言系统都会提供IO操作的类库,用于对预定义类型数据进行输入输出的操作。C++也是如此,它是以字节流的形式实现的。在输入操作时,字节流从输入设备(键盘、磁盘)流向内存;在输出操作时,字节流由内存流向输出设备(显示器、打印机);字节流可以是ASCII字符、二进制数据、图形图像、音频视频等信息。文件和字符串也可以看成是有序的字节流,又称为文件流和字符串流。C++的编译系统自带一个面向对象的输入输出软件包,即IO流类库。库中各种类的声明都被包含在相应的头文件中,比如之前经常用到的头文件iostream,其中使用的cin\cout都是常用的流对象,用于对标准设备的IO操作。还有用于用户文件管理IO操作的fstream头文件(磁盘文件的操作),用于字符串流的IO操作的strstream头文件(内存字符流的操作),以及iomanip头文件用于输入输出的格式控制。

  在IO流类库中包含以下几个常用的流类:

bubuko.com,布布扣

ios是抽象基类,类istream和ostream是单继承于ios,而类iostream是通过多继承于类istream和类ostream。ios除了派生出istream和ostream还派生出fstreambase文件流类和strstreambase串流类,而该4类又派生出ifstream、ofstream、istrstream、ostrstream,以及fstream和strstream。

  在C++中除了上述提到过的预定义流对象cout和cin外,还有非缓冲标准出错流对象cerr和缓冲标准出错流对象clog,它们都是来自于ostream类的对象,用于输出错信息。cerr和clog之间的不同之处在于cerr是不经过缓冲区直接向显示器输出有关信息,而clog则是先把信息放在缓冲区,缓冲区满后或遇上endl时向显示器输出。下面介绍几个预定义对象cout和cin的几个成员函数:

cout.put(字符变量或单字符);//注:参数可以是字符的ASCII码或整型表达式

cin.get(字符型变量);//注:从输入流中读取一字符(包括空白字符)

cin.getline(字符数组,字符个数,终止标志符);

cin.getline(字符指针,字符个数,终止标志符);//注:从输入流中读取n-1个字符,赋值给字符数组或字符指针所指的字符数组,最后插入一个字符串结束标志‘\n‘。如果在读取n-1个字符之前遇到指定的终止符,则提前结束读取,最后插入一个字符串结束标志‘\n‘。

cin.ignore(n,终止符);//注:跳过输入流中n个字符(默认为1),或遇到指定终止符(默认为EOF)时提前结束。

综合上述成员函数举例:

bubuko.com,布布扣
 1 #include "stdafx.h"
 2 #include <iostream>
 3 
 4 int main()
 5 {
 6     std::cout<<"cout.put:"<<std::endl;
 7     std::cout.put(X);
 8     std::cout.put(\n);
 9     std::cout.put(88);
10     std::cout.put(\n);
11 
12     std::cout<<"********************************"<<std::endl;
13 
14     std::cout<<"cin.get:"<<std::endl;
15 char ch;
16 while(std::cin.get(ch))
17     {
18 if(ch==\n)
19         {
20             std::cout<<std::endl;
21 break;
22         }
23         std::cout.put(ch);
24     }
25 
26     std::cout<<"********************************"<<std::endl;
27 
28     std::cout<<"cout.getline:"<<std::endl;
29 
30 char str[10];
31     std::cin.getline(str,10,t);
32     std::cout<<str<<std::endl;
33 
34     std::cout<<"********************************"<<std::endl;
35 
36     std::cout<<"cout.ignore:"<<std::endl;
37     std::cin.ignore(5,t);
38     std::cin>>str;
39 
40     std::cout<<str<<std::endl;
41 
42 return0;
43 }
 
这里要注意ignore的使用,它后面一定跟标准输入语句,否则强制等待输入;其实ignore的作用就是对之后输入的内容进行忽略,例如 char str[10];cin.ignore(5,‘q‘);cin>>str;折句话的意思就是要求输入str,共十个字符(包括‘\0‘),但是ignore在这里就会忽略你的前5个字符(如果前五个字符内有q,那忽略q与之前的字符),所以你要输入9个字符+忽略的字符+\0

c++IO之标准设备操作流,布布扣,bubuko.com

c++IO之标准设备操作流

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://blog.csdn.net/jiangheng0535/article/details/38488853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!