这是我检查特定文本文件中的文件扩展名的方式吗?
您好,我正在尝试实现一种方法来检查特定文本文件中的文件扩展名,下面的代码似乎没有达到我想要的效果,但我想知道这是否是执行此操作的正确方向。如果不是的话,有什么库可以让我用尽可能少的代码来完成此操作。
string fn = ".txt";
if(fn.substr(fn.find_last_of(".") + 1) == ".txt") {
fprintf(stderr,"yes");
} else {
fprintf(stderr,"no");
}
我使用的是 Windows 7 32 位
Hello I'm trying to implement a way too check a file extension in a specific text file the code below doesn't seem to do what I want but I was wondering if this is somewhat the right direction to take in doing this. if not what library are there that would allow me to do this in as less code as possible.
string fn = ".txt";
if(fn.substr(fn.find_last_of(".") + 1) == ".txt") {
fprintf(stderr,"yes");
} else {
fprintf(stderr,"no");
}
im on windows 7 32bit
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我首选的解决方案是
boost::filesystem
,正如减号所示,但如果不是:
这对我来说似乎是最简单的。
My preferred solution would be
boost::filesystem
, as minus suggests,but if not:
This would seem the simplest to me.
fn.substr(fn.find_last_of(".") + 1)
返回不带点的"txt"
。因此,要么从substr
中删除+1
,要么与不带点的"txt"
进行比较。fn.substr(fn.find_last_of(".") + 1)
returns"txt"
without the dot. So either remove+1
fromsubstr
or compare with"txt"
without the dot.如果您只需要在 Windows 上工作,最好的解决方案是使用 Win32 API PathMatchSpec。
对于您的示例:
或作为函数:
正如预期的那样,该函数不区分大小写,并正确处理目录包含点但文件不包含点的情况,例如
C:\\directory.with.dots\ \testtxt
。If you only need this to work on Windows, the best solution is to use the Win32 API PathMatchSpec.
For your example:
Or as a function:
As would be expected, this function is case-insensitive and correctly handles the case where the directory contains dots but the file does not, e.g.
C:\\directory.with.dots\\testtxt
.我认为 boost 文件系统库应该对你有帮助(扩展路径功能)。
http://www.boost.org/doc/libs/release /libs/filesystem/index.html
I think boost filesystem library should help you (extension path function).
http://www.boost.org/doc/libs/release/libs/filesystem/index.html