1.文件操作相关的库

一、filesystem(C++17) 和 fstream

1.std::filesystem::path - cppreference.cn - C++参考手册

std::filesystem::path

表示路径

构造函数:

path( string_type&& source, format fmt = auto_format );

可以用string进行构造,也可以用string进行隐式类型转换。

2.std::filesystem::exists - cppreference.cn - C++参考手册

bool exists( const std::filesystem::path& p );

检查路径是否指向现有的文件系统对象,即对应路径的文件是否存在。

3.std::filesystem::create_directory, std::filesystem::create_directories - cppreference.cn - C++参考手册

bool create_directory( const std::filesystem::path& p );

bool create_directories( const std::filesystem::path& p );

creat_directory创建单个空目录,create_directories递归创建目录。

4.打开文件(IO,ifstream和ofstream)

4.1.写方式打开 ofstream

explicit ofstream (const string& filename, ios_base::openmode mode = ios_base::out); //不传参默认直接覆盖写入
初始化,类似于 open(filename,O_WRONLY | mode);
filename为文件名,mode为打开的方式, std::ios::app 表示以追加方式写入。
ios中相关操作对象:
ios::in :读取文件(ifstream默认模式)
ios::out :写入文件(ofstream默认模式,会覆盖原内容)
ios::app :追加写入(写入内容始终在文件末尾)
ios::ate:打开文件后定位到末尾(可移动指针)
ios::trunc:清空文件内容(ofstream默认行为,与ios::out组合时生效)
简述:
追加方式打开:
std::ofstream ofs(filename, std::ios::out | std::ios::app); (std::ios::out可省略)
效果:不存在就新建,追加写入。 ( std::ios::out 可不写,ofstream自带这个)

隐含行为:如果文件不存在,std::ofstream 会自动创建文件ofstream隐含 O_CREAT

只写且清空方式打开:

std::ofstream ofs(filename, std::ios::trunc);

相当于行为:open(filename, O_CREAT | O_WRONLY | O_TRUNC);

4.2.读方式打开 ifstream

cpp 复制代码
explicit ifstream (const string& filename, 
        ios_base::openmode mode = ios_base::in);//默认只读

以只读方式打开:

std::ifstream ifs(filename);

相当于行为:open(filename, O_RDONLY);

4.3 关闭

cpp 复制代码
void close();

5.读写操作

5.1 读操作

cpp 复制代码
istream& read (char* s, streamsize n);
istream& getline (istream&  is, string& str);

第一个:按指定字节数量读,读到s中。file.read(s,n);

第二个:按行读取,读到str中。std::getline(file,str);

5.2 写操作

用流插入的方式进行写入,和cout一致。

file<<xxx;

6.文件重命名

void rename( const std::filesystem::path& old_p, const std::filesystem::path& new_p );

使用:std::filesystem::rename(old,new);

7.更改工作目录

void current_path( const std::filesystem::path& p );

使用:std::filesystem::current_path(newWorkDir);

相关推荐
凡人叶枫26 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
CSDN_RTKLIB27 分钟前
使用三方库头文件未使用导出符号情景
c++
rainbow68892 小时前
Linux文件描述符与重定向原理
c++
CodeSheep程序羊3 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
编程小白20263 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
.小墨迹3 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
历程里程碑4 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴4 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
天若有情6734 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
czy87874755 小时前
深入了解 C++ 中的 `std::bind` 函数
开发语言·c++