提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档  
  
 
  
概述 
在C++的标准库中,将用于进行数据输入输出的类统称为”流类“。cin是流类istream的对象,cout是流类ostream的对象。 要使用流类,需要在程序中包含iostream头文件。  对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称  为标准的输入输出,简称标准I/O。  以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。  对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空  间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。     ostream中定义了四个表中流对象:  cin 标准输入 从键盘读取,可以重定向为从文件读取  cout 标准输出 输出到屏幕,可以重定向为向文件写入  cerr 标准错误 必须输出到屏幕,不可以重定向为向文件写入  clog 标准错误 输出到屏幕,可以重定向为向文件写入  重定向:就是将输入的源或输出的目的地改变。例如,cout本来是输出到屏幕的,但是经过重  定向,本该输出到屏幕上的东西就可以被输出到其他地方。  
标准输入输出流 
标准输入流常见API 
int cin.get(); 
istream& cin.get(char* _Str, streamsize _Count,char _Delim); 
超过count大小或者遇到字符delim时停止
  
istream& cin.getline(char* _Str, streamsize _Count);
istream& cin.getline(char* _Str, streamsize _Count,char _Delim);
  
用cin>>str输入字符串时,遇到空格会截断,所以最好用cin.getline()。  
标准输出流格式控制两种方式 
通过流成员函数进行输入输出格式控制  
cout.width(20); 
cout.fill('*'); 
cout.setf(ios::left); 
global
cout.setf(ios::scientific); 
global
cout << 1.2 << endl;
cout.width(50);
cout.unsetf(ios::scientific); 
global
cout << 3.14 << endl;
cout.precision(3); 
cout << 1.23456 << endl;
cout.setf(ios::showbase | ios::uppercase); 
制前缀 global
cout << oct << 520 << endl; 
cout << dec << 520 << endl; 
cout << hex << 520 << endl; 
cout.setf(ios::showpos); 
cout.setf(ios::dec); 
cout << 666 << endl;
  
** 通过#include 提供的控制符,进行输入输出格式控制 **  setbase(n) 设置整数为n进制(n=8,10,16)  setfill(n) 设置填充字符  setprecision(n) 设置浮点数精度  setw(n) 设置内容宽度  setiosflags(ios::scientific) 设置浮点数以科学计数法显示  setiosflags(ios::left) 输出左对齐  
cout <<setw(30) <<setfill('*')<< setiosflags(ios::left) << 520 << endl;
  
字符串流 
文件流 
在从文件读取信息或者向文件写入信息之前,必须先打开文件。  ofstream 用来打开文件进行写操作  ifstream 用来打开文件进行读操作  fstream 支持文件的读和写操作  
打开文件:  void open(const char *filename, ios::openmode mode)     
fstream file("./maye.txt", ios::in | ios::out);
if (!file || !file.is_open())
{
cerr << "文件打开失败" << endl;
}
file.close();
  
void asciiReadWrite(char* destFileName, char* srcFileName)
1
2
{
fstream fsrc(srcFileName, ios::in);
fstream fdest(destFileName, ios::out);
fsrc.close();
fdest.close();
}
void binReadWrite(char* destFileName, char* srcFileName)
{
fstream fsrc(srcFileName, ios::in | ios::binary);
fstream fdest(destFileName, ios::out | ios::binary);
fsrc.close();
fdest.close();
}
  
文件指针异常处理 
文件流还提供了用于重新定位文件位置指针的成员函数。  
istream& seekg(long int _Pos); 
istream& seekg(long int _Pos,ios_base::seekdir _Way);
istream& seekg(long int _Pos);
istream& seekg(long int _Pos,ios_base::seekdir _Way);
  
ios::beg 默认的,从流的开头开始  ios::cur 从流的当前位置开始  ios::end 从流的末尾开始定位 
                
                
                
        
        
    
  
 
 |