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

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

代码

#include 
#include 
#include 

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]

你可能感兴趣的:(c++,开发语言)