C++中的基本IO流

IO流

  • 1.基本IO流
    • 1.1 IO对象无拷贝无赋值
    • 1.2 IO对象的条件状态
    • 1.3 IO与缓冲
  • 2.文件IO流
    • 2.1 使用ifstream读取文件内容
    • 2.1 使用ofstream写文件
  • 3.stringIO类

在C++中时不直接处理输入输出的,我们使用的是标准IO库来处理IO,这些库支持从文件、控制台窗口等读写数据,当然在C++中还有一些特殊的类型允许内存IO。比如我们就可以通过string进行读写数据。
下面我们先给出基本IO类的库类型和标准头文件

表1 基本IO库
头文件 类型
iostream istream,wistream从流读取数据;ostream,wostream向流写入数据;iostream,wiostream读写流
fstream ifstream,wifstream从文件读取数据;ofstream,wofstream向文件写入数据;fstream,wfstream读写文件
sstream istringstream,wistringstream从string读取数据;ostringstream,wostringstream向string写入数据;stringstream,wstringstream读写流

1.基本IO流

最基本的IO类也就是我们使用最频繁的iostream,我们最常使用的cincout就分别是istream对象和ostream对象。使用标准库coutcin进行输出输入时必须包含头文件

1.1 IO对象无拷贝无赋值

对于IO对象来说,我们是不能用它来进行拷贝或者对其赋值的。

	ostream out1,out2;
	out1 = out2;	//错误,不能对IO对象赋值

既然IO流对象不能拷贝或者赋值,而我们又知道C++的函数形参是传值的,那么IO流有时候需要作为函数参数该怎么办呢,是的,在IO流作为函数参数时我们需要以引用方式传递和返回流对象。如下面的print函数和read函数分别是通过流进行打印和输入,要是需要打印的话,就要将数据输出到一个输出流ostream中并返回,我们可以看到此时返回的值是引用类型,而且作为函数参数的ostream也是一个引用类型。

	std::ostream &print(std::ostream&, const SaleItem&);
	std::istream &read(std::istream&, SaleItem&);

1.2 IO对象的条件状态

既然IO操作需要控制从设备进行输入输出,那么必然有可能会引发一些错误状态,为此C++IO库定义了一些函数和标志来帮助我们访问流的条件状态。假设有IO类型strm,我们定义了流s,下表列举出一些常用的状态标识:

表2 基本IO状态
状态名称 解释
strm::iostate 提供表达表达条件状态的完整功能
strm::failbit 用来指出IO流操作已经失败了
strm::badbit 用来指出IO流已经崩溃
strm::eofbit

你可能感兴趣的:(C++,c++)