输入流对象:
cin 与标准输入设备相连
输出流对象:
cout 与标准输出设备相连
cerr 与标准错误输出设备相连
clog 与标准错误输出设备相连
缺省情况下 cerr << "Hello,world" << endl;
clog << "Hello,world" << endl;
和
cout << “Hello,world” << endl;一样
- cin对应于标准输入流,用于从键盘读取数据,也可以被重定向为从文件中读取数据。
- cout对应于标准输出流,用于向屏幕输出数据,也可以被重定向为向文件写入数据。
- cerr对应于标准错误输出流,用于向屏幕输出出错信息,
- clog对应于标准错误输出流,用于向屏幕输出出错信息,
- cerr和clog的区别在于cerr不使用缓冲区,直接向显示器输出信 息;而输出到clog中的信息先会被存放在缓冲区,缓冲区满或者 刷新时才输出到屏幕。
流操作算子:
- 整数流的基数:流操纵算子dec(十进制输出),oct(八进制输出),hex(十六进制输出),setbase
- 浮点数的精度(precision,setprecision)
- 设置域宽(setw,width)
- 用户自定义的流操纵算子
使用流操纵算子需要 #include<iomanip>
控制浮点数精度的流操纵算子
precision, setprecision
precision是成员函数,其调用方式为: cout.precision(5);
setprecision 是流操作算子,其调用方式为: cout << setprecision(5); // 可以连续输出
它们的功能相同。
指定输出浮点数的有效位数(非定点方式输出时)
指定输出浮点数的小数点后的有效位数(定点方式输出时)
定点方式:小数点必须出现在个位数后面
非定点方式:类似于科学计数法
文件的读写:
创建文件:
路径:
绝对路径: "c:\\tmp\\mydir\\some.txt"
相对路径: "\\tmp\\mydir\\some.txt"
当前盘符的根目录下的
tmp\dir\some.txt "tmp\\mydir\\some.txt"
当前文件夹的tmp子文件夹里面的…..
"..\\tmp\\mydir\\some.txt"
当前文件夹的父文件夹下面的tmp子文件夹里面的…..
"..\\..\\tmp\\mydir\\some.txt"
当前文件夹的父文件夹的父文件夹下面的tmp子文件夹里面的
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v;
ifstream srcFile("in.txt",ios::in);//打开文件进行读入
ofstream destFile("out.txt",ios::out);
int x;
while( srcFile >> x )//类似cin
v.push_back(x);
sort(v.begin(),v.end());
for( int i = 0;i < v.size();i ++ )
destFile << v[i] << " ";
destFile.close();//打开一个文件一定要记得关闭它
srcFile.close();//因为系统打开文件数有限
return 0;
}
二进制文件读写
二进制读文件:
ifstream 和 fstream的成员函数:
istream& read (char* s, long n);
将文件读指针指向的地方的n个字节内容,读入到内存地址s,然后将文件读指针向后移动n字节 (以ios::in方式打开文件时,文件读指 针开始指向文件开头) 。
二进制写文件:
ofstream 和 fstream的成员函数:
istream& write (const char* s, long n);
将内存地址s处的n个字节内容,写入到文件中写指针指向的位置, 然后将文件写指针向后移动n字节(以ios::out方式打开文件时,文件写指针开始指向文件开头, 以ios::app方式打开文件时,文件写指针开始指向文件尾部 )
读入:
二进制文件读写
将 students.dat 文件的Jane的名字改成Mike