Rue*_*uel 4 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);
}
Run Code Online (Sandbox Code Playgroud)
我在文件名上这样做.但是有一个问题.有些文件的扩展名如:tar.gz,tar.bz2等等.还有一些文件名有额外的点.Some.file.name.tar.gz.我想分开Some.file.name并tar.gz 注意:文件名中的点数不是常数.
我也试过PathFindExtension但没有运气.这可能吗?如果是的话,请赐教.谢谢.
编辑:我很抱歉没有指定操作系统.这是Windows.
我认为你可以std::string find_last_of用来获取最后一个的索引.,并substr剪切字符串(虽然涉及多个点的"复杂扩展"将需要额外的工作).
没有办法做你想要的,不涉及扩展数据库的目的.扩展没有什么神奇之处,它们只是文件名的一部分(如果你gunzip foo.tar.gz有可能得到一个foo.tar,那么对于这个应用程序.gz实际上是"扩展名").因此,为了做你想做的事情,建立一个你想要寻找的扩展数据库,如果你找不到,可以回到"最后一个点".