c++17操作文件并解析目录

c++17之后c++就已经支持文件系统操作了,用来解析目录方便很多。这里是自己写的一个例子,如果是gcc8,编译时需加-lstdc++fs。gcc9应该不用加了。但是都要开启 -std=c++17 。

代码
#include <stdio.h>
#include <string>
#include <filesystem>

int main()
{
	namespace fs = std::filesystem;

	auto picpath = fs::path("/data/newface/yll.jpg");
	

	std::string stem = picpath.stem();
	std::string extension = picpath.extension();
	printf("stem:[%s], extension[%s]\n", stem.c_str(), extension.c_str()); //截取文件名和扩展名

	auto parent_path = picpath.parent_path().string(); //文件的上层目录
	auto filename = picpath.filename().string();	   //文件名
	auto new_path = picpath.parent_path().append("111.jpg");


	printf("parent_path[%s], filename[%s], new_path[%s]\n", parent_path.c_str(), filename.c_str(), new_path.string().c_str());
	
	bool has_pic = fs::exists(picpath) && fs::is_regular_file(picpath); //判断是否存在并且是普通文件
	if (has_pic)
	{
		fs::copy_file(picpath, new_path); //复制一份
		fs::remove(picpath);			  //删除文件
	}

	return 0;
}

编译命令:

gcc main.cpp -std=c++17 -lstdc++fs  -lstdc++

执行输出:

stem:[yll], extension[.jpg]
parent_path[/data/newface], filename[yll.jpg], new_path[/data/newface/111.jpg]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值