C+等价于MATLAB的“文件部分”函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

在MATLAB中,有一个很好的函数名为filePart,它接受完整的文件路径并将其解析为路径、文件名(没有扩展名)和扩展名,如文档中的以下示例所示:

file = 'H:\user4\matlab\classpath.txt';

[pathstr, name, ext] = fileparts(file)

>> pathstr = H:\user4\matlab

>> name = classpath

>> ext = .txt

所以我想知道在任何标准的C+或C库中是否有我可以使用的等效函数?还是我要自己来实现?我意识到这很简单,但我想如果已经有什么预先做好的东西,那就更好了。

提问于
用户回答回答于

一些可能的解决方案,取决于你的操作系统:

  • Visual C+
  • PathFindExtensionPathFindFileNamePathStripPathPathRemoveExtensionPathRemoveFileSpec
用户回答回答于

我只是写了一个简单的函数。它的行为类似于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;
}

扫码关注云+社区

领取腾讯云代金券