C++ - 拆分文件名和文件扩展名

标签 c++ windows string split

好的,首先我不想使用 Boost 或任何外部库。我只想使用 C++ 标准库。我可以使用我的 split() 函数轻松地用给定的分隔符拆分字符串:

void split(std::string &string, std::vector<std::string> &tokens, const char &delim) {
    std::string ea;
    std::stringstream stream(string);
    while(getline(stream, ea, delim))
        tokens.push_back(ea);
}

我在文件名上这样做。但是有一个问题。有些文件的扩展名如下:tar.gztar.bz2 等。还有一些文件名带有额外的点。 Some.file.name.tar.gz。我希望将 Some.file.nametar.gz 分开 注意:文件名中的点数不是常量。

我也试过 PathFindExtension 但没有成功。这可能吗?如果是这样,请赐教。谢谢。

编辑:我很抱歉没有指定操作系统。这是 Windows。

最佳答案

我想你可以使用std::string find_last_of获取最后一个 . 的索引,以及 substr切割字符串(尽管涉及多个点的“复杂扩展”将需要额外的工作)。

关于C++ - 拆分文件名和文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4314464/

相关文章:

c++ - 避免使用带有默认参数的类模板的括号

c++ - 将 tf::transform 对象写入文件

windows - ExitCode -1073741502 是什么意思?

python - 使用 2 个参数制作字符串列表。 Python 3.3

python - 如何在 Python 中将变量设为 'raw text'?

c++ - 用一个迭代器迭代 vector 的 vector

c++ - 函数调用中的堆栈分配

Windows 批处理脚本 : substring calculation

c - 如何在这段代码中使用自定义函数?

连接字符串并将它们存储在 ANSI C 的缓冲区中