c++ IO库

文章目录

输出输出流

用于从设备读取数据或者向设备写入数据。

输出流对象,iostream::cout ,用于向设备写入数据;

输入流对象,iostream::cin , 用于从设备读取数据;

因为流可能处于错误状态,因此代码通常应该在使用一个流之前检查它是否处于一个良好的状态。确定一个流对象的状态的最简单的方法就是将它当作一个条件来使用。

cpp 复制代码
#include <iostream>
using namespace std;
while(cin>>word)
{
	//读操作成功
}

文件输入输出

从文件中读取数据,向文件中写入数据;

cpp 复制代码
#include <fstream>
#include <string>
using namespace std;

// 从文件中读取数据
ifstream inFile("read.txt);
// 检查文件是否成功打开
if(!inFile)
{
	cerr << "Unable to open read.txt" << endl;
}

// 逐行读取文件内容并输出到控制台
string line;
while (getline(infile, line)) 
{
    cout << line << endl;
}

inFile.close();

文件操作模式:

从文件读取数据

ifstream 定义对象,直接就为读模式;我们也可以使用

fsream::inFile("read.txt", std::ios::in) 来定义读模式;

向设备写入数据

ofstream outFile("read.txt", std::ios::app)

不带std::ios::app,默认为截断模式打开文件,即将文件中原来的内容丢弃,再写入数据;

而std::ios::app则是在原来数据的基础上继续写入数据。

cpp 复制代码
#include <fstream>
#include <string>
using namespace std;

ofstream outFile("read.txt", std :: ios:: app);
if(!inFile)
{
	cerr << "Unable to open read.txt" << endl;
}

string s = "abc";
outFile << s << endl;
outFile.close();

对文件进行完读写操作后,一定要记得 close() 文件,因为如果不关闭文件会导致一些问题:

  • 资源泄漏:每次打开文件都会占用系统资源,如果不关闭文件流,则这些资源将被一直占用,直到程序结束这些资源才被释放。
  • 文件数据不稳定:如果在写入文件后不关闭文件流,文件可能处于不稳定状态,因为数据可能尚未完全写入磁盘。在关闭文件流之前,操作系统可能会将数据缓存在内存中,并在关闭文件流时才将其写入磁盘。如果不关闭文件流,可能会导致文件中的数据不完整- 或者丢失。
  • 文件锁定:有些操作系统在打开文件时会对文件进行锁定,防止其他进程或线程同时对文件进行操作。如果不关闭文件流,可能会导致文件一直被锁定。
相关推荐
汉克老师3 小时前
GESP2024年6月认证C++二级( 第一部分选择题(9-15))
c++·循环结构·分支结构·gesp二级·gesp2级·求余数
清水白石0083 小时前
突破并行瓶颈:Python 多进程开销全解析与 IPC 优化实战
开发语言·网络·python
王老师青少年编程4 小时前
csp信奥赛c++高频考点假期集训(分模块进阶)
数据结构·c++·算法·csp·高频考点·信奥赛·集训
百锦再4 小时前
Java之Volatile 关键字全方位解析:从底层原理到最佳实践
java·开发语言·spring boot·struts·kafka·tomcat·maven
daad7775 小时前
rcu 内核线程
java·开发语言
xzjiang_3655 小时前
检查是否安装了MinGW 编译器
开发语言·qt·visual studio code
王老师青少年编程5 小时前
2020年信奥赛C++提高组csp-s初赛真题及答案解析(选择题1-5)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
百锦再5 小时前
Java JUC并发编程全面解析:从原理到实战
java·开发语言·spring boot·struts·kafka·tomcat·maven
清水白石0086 小时前
突破性能瓶颈:深度解析 Numba 如何让 Python 飙到 C 语言的速度
开发语言·python
Eternity∞6 小时前
Linux系统下,C语言基础
linux·c语言·开发语言