C++之输入输出流

输入输出流:
1. I/O(输入/输出)流类库提供对象之间的数据交互服务
流类库预定义了一批流对象,连接常用的外部设备
程序员可以定义所需的I/O流对象,使用流库提供的工作方式
实现数据传输
2.流类和流对象: 程序中,对数据的输入/输出是以字节流实现的
应用程序对字节序列作出各种数据解释
I/O系统的任务就是在内存和外部设备之间稳定可靠地传输数据
和解释数据。
流类对象可以建立和删除,可以从流中获取数据和向流添加数据
3.流类库: 流库(stream library)是用继承方法建立的输入输出类库
流库具有两个平行的基类:streambuf 和 ios 类,所有流类均以两者
之一作为基类
streambuf 类提供对缓冲区的低级操作
设置缓冲区 对缓冲区指针操作 向缓冲区存/取字符
ios 类及其派生类提供用户使用流类的接口,支持对streambuf 的缓
冲区输入/输出的格式化或非格式化转换

4.提供用户接口:

5.头文件

  iostream.h  包含操作所有输入/输出流所需的基本信息

   含有cin、cout、cerr、clog对象,提供无格式和格式化的I/O

  iomanip.h  包含格式化I/O操纵算子,用于指定数据输入输出的格式

  fstream.h  处理文件信息,包括建立文件,读/写文件的各种操作接口

  每种C++版本还包含其他一些与I/O相关的库,提供特定系统的某些功能

6.标准流:

(1)  cin  istream 类的对象,通常连向键盘,可以重定向

(2)  cout  ostream 类的对象,通常连向显示器,可以重定向

(3)  cerr  ostream 类的对象,连向显示器。不能重定向

(4)  clog  ostream 类的对象,连向打印机。不能重定向

7.istream的共有成员函数


函数


功能


read


无格式输入指定字节数


get


从流中提取字符,包括空格


getline


从流中提取一行字符


ignore


提取并丢弃流中指定字符


peek


返回流中下一个字符,但不从流中删除


gcount


统计最后输入的字符个数


eatwhite


忽略前导空格


seekg


移动输入流指针


tellg


返回输入流中指定位置的指针值


operstor>>


提取运算符

 1 #include <iostream>
 2 using namespace std;
 3
 4 void main()
 5 {
 6     char c;
 7     cout << "输入字符:\n";
 8     while((c=cin.get())!=‘\0‘)
 9     {
10         cout.put(c);
11     }
12     cout << endl;
13     cout << "再次输入字符:\n";
14     while(cin.get(c))
15     {
16         if(c == ‘\0‘)
17         {
18             break;
19         }
20         cout.put(c);
21     }
22     cout << endl;
23     char s[80];
24     cout << "最后输入字符:\n";
25     //指定输出字符数
26     cin.get(s,10);
27     cout << s << endl;
28 }

5.ostream的共有成员函数


函数


功能


put


无格式,插入一个字节


write


从无格式,插入一字节序列


flush


刷新输出流


seekp


移动输出流指针


tellp


返回输出流中指定位置的指针值


operstor<<


插入运算符

 1 #include <iostream>
 2 using namespace std;
 3
 4 void main()
 5 {
 6     char c[26];
 7     cin.getline(c,26);
 8     cout.write(c,26);
 9     cout << endl;
10 }

6.格式控制

  ios提供直接设置标志字的控制格式函数

  iostream和iomanip库还提供了一批控制符简化I/O格式化操作

设置标志字:

状态标志              值               含义                             输入/输出

skipws            0X0001          跳过输入中的空白                I

left             0X0002          左对齐输出                   O

right             0X0004          右对齐输出                   O

internal             0X0008          在符号位和基指示符后填入字符          O

dec               0X0010          转换基制为十进制                I/O

oct               0X0020          转换基制为八进制                I/O

hex            0X0040           转换基制为十六进制               I/O

showbase          0X0080          在输出中显示基指示符             O

showpoint          0X0100           输出时显示小数点                 O

uppercase              0X0200          十六进制输出时一律用大写字母            O

showpos                0X0400          正整数前加“+”号                 O

scientific                 0X0800          科学示数法显示浮点数                O

fixed                  0X1000          定点形式显示浮点数                O

unitbuf               0X2000          输出操作后立即刷新流               O

stdio              0X4000          输出操作后刷新stdout 和 stdree          O

7.IOS控制格式的函数:


函数


功能


long flags( long lFlags );

long flags() const;


用参数lFlags更新标志字

返回标志字


long setf( long lFlags );

long setf( long lFlags, long lMask );


设置lFlags指定的标志位

将lMask指定的位清0,然后设置lFlags指定位


long unsetf( long  lMask );


将参数lMask指定的标志位清0


int width( int nw );


设置下一个输出项的显示宽度为nw


char fill( char cFill );


空白位置以字符参数cFill填充


int precision( int np );


用参数np设置数据显示精度

8.设置输出宽度

 1 #include<iostream>
 2 using namespace std;
 3 //设置输出宽度
 4 int main()
 5 { char *s = "Hello";
 6    cout.fill( ‘*‘ ) ;    //设置填充符
 7    cout.width( 10 ) ;    //设置输出宽度
 8    cout.setf( ios :: left ) ;    //设置左对齐
 9    cout << s << endl ;
10    cout.width( 15 ) ;    //设置输出宽度
11    cout.setf( ios :: right, ios :: left ) ;    //消除左对齐标志位,设置右对齐
12    cout << s << endl ;
13 } 

8.不用基数形式的输出和输入

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 { int a , b , c ;
 5    cout << "please input a in decimal: " ;
 6    cin >> dec >> a ;
 7    //cin.setf( ios :: dec , ios :: basefield ) ;
 8    //cin >> a ;    //十进制输入
 9
10    cout << "please input b in hexadecimal: " ;
11    cin >> hex >> b ;
12    //cin.setf( ios :: hex , ios :: basefield ) ;
13    //cin >> b ;     //十六进制输入
14
15    cout << "please input c in octal: " ;
16    cin >> oct >> c ;
17    //cin.setf( ios :: oct , ios :: basefield ) ;
18    //cin >> c ;     //八进制输入
19
20    cout << "Output in decimal :\n" ;
21    cout <<"a = "<<a<<" b = "<<b<<"  c = "<<c<<endl ;
22    //cout.setf( ios :: dec, ios :: basefield );            //十进制输出
23    //cout << "a = " << a << "  b = " << b << "  c = " << c << endl ;
24
25    cout <<hex<<"a = "<<a<<" b = "<<b<<" c = "<<c<<endl ;
26    //cout.setf( ios :: hex , ios :: basefield ) ;        //十六进制输出
27    cout << "Output in hexadecimal :\n" ;
28    cout << "a = " << a << "  b = " << b << "  c = " << c << endl ;
29
30    cout <<oct<<"a = "<<a<<" b = "<<b<<" c = "<<c<<endl ;
31
32    //cout.setf( ios :: oct , ios :: basefield ) ;        //八进制输出
33    //cout << "Output in octal :\n" ;
34    cout << "a = " << a << "  b = " << b << "  c = " << c << endl ;
35 }

9,格式化输出浮点数

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 { double x = 22.0/7 ;
 5    int i ;
 6    cout << "output in fixed :\n" ;
 7    cout.setf( ios::fixed | ios::showpos ) ;         // 定点输出,显示 +
 8    for( i=1; i<=5; i++ )
 9       { cout.precision( i ) ;  cout << x << endl ; }
10    cout << "output in scientific :\n" ;
11    // 清除原有设置,科学示数法输出
12    cout.setf(ios::scientific, ios::fixed|ios::showpos ) ;
13    for( i=1; i<=5; i++ )
14       { cout.precision(i) ;   cout << x*1e5 << endl ; }
15 }

10.格式控制符

   控制符是istream和ostream类定义了一批函数,作为重载插入运算符 << 或提取运算符 >> 的右操作数控制I/O格式

iostream几个常用的控制符


控制符


功能


输入/输出


endl


输出一个新行符,并清空流


O


ends


输出串结束符,并清空流


O


flush


清空流缓冲区


O


dec


用十进制表示法输入或输出数值


I/O


hex


用十六进制表示法输入或输出数值


I/O


oct


用八进制表示法输入或输出数值


I/O


ws


提取空白字符


I

11.iomanip的控制符


控制符


功能


输入/输出


resetiosflags ( ios::lFlags )


清除lFlags指定的标志位


I/O


setiosflags ( ios::lFlags )


设置lFlags指定的标志位


I/O


setbase ( int base )


设置基数,base = 8,10,16


I/O


setfill ( char c )


设置填充符c


O


setprecision ( int n )


设置浮点数输出精度


O


setw ( int n )


设置输出宽度


O

 1 // 例11-7  整数的格式化输出
 2 #include <iostream>
 3 #include <iomanip>
 4 using namespace std ;
 5 int main()
 6 { const int k = 618 ;
 7    cout << setw(10) << setfill(‘#‘) << setiosflags(ios::right) << k <<endl ;
 8    cout << setw(10) << setbase(8) << setfill(‘*‘)
 9            << resetiosflags(ios::right) << setiosflags(ios::left) << k << endl ;
10 } 
时间: 2024-08-29 17:50:10

C++之输入输出流的相关文章

输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

Java输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

java I/O系统(输入输出流)

java I/O系统(输入输出流) 流的特性1.含有流质(数据)2.它有方向(读或写) 流的分类: 输入流和输出流 输入流:io包中的输入流继承自抽象类InputStream或Reader 输出流:io包中的输入流继承自抽象类OutputStream或Writer 字节流和字符流 注:1字节代表1个英文单词存储的数据大小,一个汉字占两字节 1.字节流:以byte为最小单位传送,继承自抽象类InputStream或OutputStream,用于处理二进制文件,InputStream为读取字节流的父

java输入输出流总结 转载

一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.      任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法.Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO.    

c++文件输入输出流fstream,对输入&gt;&gt;和输出&lt;&lt;重载

1. fstream 继承自iostream --> 要包含头文件#include<fstream> 2. 建立文件流对象 3. 打开文件夹 4. 测试是否打开成功 5. 进行读写操作 6. 关闭文件 #include<iostream> #include<fstream> using namespace std; int main(){ ifstream ifile; ofstream ofile; ifile.open("d:\\fileIn.txt

C++ 输入输出流 总结

1.ostream & operator<<(int); 重载了<<符号,用于对int类型的输出.为什么要返回ostream的引用呢? 例如: cout<< "1122"  << "2345" <<endl; 那么当输出"1122"的时候,返回了cout,也就是:  cout<<"1122"返回为 cout,然后可以继续像cout<<&

字节流之数据输入输出流

数据输入输出流:让我们对基本数据类型操作更方便

Java IO详解(三)------字节输入输出流

File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocean/p/6854098.html 那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream)  1.字节输出流:OutputStream public abstrac

字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

概念: InputStream类是字节输入流的抽象类,是所有字节输入流的父类. OutputStream类是字节输入流的抽象类,是所有字节输出流的父类. In(可以理解为读)Out(可以理解为写) 一.字节流的读与写 FileInputStream类与FileOutStream类都是用来操作磁盘文件的. 1. FileInputStream(String name); 填String类型的路径名 FileInputStream(File file); 填入File对象 2. FileOutStr