提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
概述
在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 从流的末尾开始定位
|