C++流
C++中流的概念
在程序设计中,数据输入输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作时通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。
C++中的流主要有以下三种:
- 标准I/O流:内存与标准输入输出设备之间信息的传递
- 文件I/O流:内存与外文件之间信息的传递
- 字符串I/O流:内存变量与表示字符串流的字符数组之间信息的传递
标准I/O流
这部分主要会用到cin,cout,常见的就是内存与显示器或键盘进行信息传递。
文件I/O流
C++文件流用于对文件进行处理,需要在源代码中包含头文件iofstream和fstream。对于文件流,C++定义了三种新的数据类型,ofstream, ifstream, fstream。
| 数据类型 | 描述 |
|---|---|
| ofstream | 输出文件流,可创建文件并向文件写入信息 |
| ifstream | 输入文件流,可从文件中读取信息 |
| fstream | 文件,同时拥有ofstream, ifstream的功能 |
打开文件
使用open()函数打开文件,open()函数是ofstream, ifstream, ofstream对象的一个成员。
void open(const char *filename, ios::openmode mode);
第一个参数要指定打开文件的名称和位置,第二个参数要指定文件被打开的模式。
| 模式标志 | 描述 |
|---|---|
| ios::app | 追加模式,所有写入都将追加到文件的末尾 |
| ios::ate | 文件打开后定位到文件末尾 |
| ios::in | 文件打开用于读取 |
| ios::out | 文件打开用于写入 |
| ios::trunc | 如果文件已经存在,其内容将在打开文件之前被截断,即把文件的长度设为0 |
关闭文件
使用close()函数打开文件,close()函数是ofstream, ifstream, ofstream对象的一个成员。
void close();
字符串I/O流
要使用C++字符串I/O流,需要在头文件中包含sstream。
对于字符串I/O流,C++也有三种新的数据类型,istringstream,ostringstream,stringstream分别用来进行输入,输出,输入输出。一般情况下使用stringstream,因为字符串通常涉及频繁的输入输出。
字符串I/O流常用于数据形式的转换,以下示例代码从文件中一行行读取数据,并将数据保存到结构体entry中。
while (std::getline(inputFile, line))
{
std::istringstream iss(line);
DataEntry entry;
iss >> entry.custNo >> entry.xCoord >> entry.yCoord >> entry.demand >> entry.readyTime >> entry.dueDate >> entry.serviceTime;
data.push_back(entry);
}
参考
C++ 流(stream)总结
C++文件和流|菜鸟教程
C++字符串流stringstream与string知识介绍与用法小结

浙公网安备 33010602011771号