好的,首先我不想使用 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.gz
、tar.bz2
等。还有一些文件名带有额外的点。 Some.file.name.tar.gz
。我希望将 Some.file.name
和 tar.gz
分开 注意:文件名中的点数不是常量。
我也试过 PathFindExtension
但没有成功。这可能吗?如果是这样,请赐教。谢谢。
编辑:我很抱歉没有指定操作系统。这是 Windows。
最佳答案
我想你可以使用std::string
find_last_of
获取最后一个 .
的索引,以及 substr
切割字符串(尽管涉及多个点的“复杂扩展”将需要额外的工作)。
关于C++ - 拆分文件名和文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4314464/