C++流

C++中流的概念

在程序设计中,数据输入输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作时通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。
C++中的流主要有以下三种:

  • 标准I/O流:内存与标准输入输出设备之间信息的传递
  • 文件I/O流:内存与外文件之间信息的传递
  • 字符串I/O流:内存变量与表示字符串流的字符数组之间信息的传递

标准I/O流

这部分主要会用到cin,cout,常见的就是内存与显示器或键盘进行信息传递。

文件I/O流

C++文件流用于对文件进行处理,需要在源代码中包含头文件iofstreamfstream。对于文件流,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++也有三种新的数据类型,istringstreamostringstreamstringstream分别用来进行输入,输出,输入输出。一般情况下使用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知识介绍与用法小结

posted @ 2023-08-09 16:30  何太狼  阅读(54)  评论(0编辑  收藏  举报