在MATLAB中,有一个名为filepart的很好的函数,它接受完整的文件路径,并将其解析为path、filename (不带扩展名)和扩展名,如文档中的以下示例所示:
file = 'H:\user4\matlab\classpath.txt';
[pathstr, name, ext] = fileparts(file)
>> pathstr = H:\user4\matlab
>> name = classpath
>> ext = .txt
所以我想知道在任何标准的C++或C库中有没有我可以使用的等价函数?或者我必须自己实现这个?我知道这很简单,但我想如果已经有了预制的东西,那将是更可取的。
谢谢。
发布于 2011-02-05 03:24:43
boost库有一个file system组件"basic_path“,它允许您使用迭代器来发现文件名中的每个组件。这样的组件是特定于操作系统的,我相信你需要为Windows、Linux等单独编译boost。
发布于 2013-04-30 17:50:59
我只是写了这个简单的函数。它的行为类似于Matlab的fileparts
,并且独立于平台工作。
struct FileParts
{
string path;
string name;
string ext;
};
FileParts fileparts(string filename)
{
int idx0 = filename.rfind("/");
int idx1 = filename.rfind(".");
FileParts fp;
fp.path = filename.substr(0,idx0+1);
fp.name = filename.substr(idx0+1,idx1-idx0-1);
fp.ext = filename.substr(idx1);
return fp;
}
发布于 2018-06-05 00:27:40
C++11/14的一种平台无关的方式。
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
void fileparts(string full, string& fpath, string& fname, string& fext)
{
auto source = fs::path(full);
fpath = source.parent_path().string();
fname = source.stem().string();
fext = source.extension().string();
}
...
string fpath, fname, fext;
fileparts(full_file_path,fpath,fname,fext);
https://stackoverflow.com/questions/4901999
复制相似问题