我有一个存储在 .log
中的文件列表,语法如下:
c:\foto\foto2003\shadow.gif
D:\etc\mom.jpg
我想从此文件中提取名称和扩展名。你能举一个简单的例子吗?
原文由 Octavian 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下技巧从 C++ 中没有扩展名的文件路径中提取文件名(不需要外部库):
#include <iostream>
#include <string>
using std::string;
string getFileName(const string& s) {
char sep = '/';
#ifdef _WIN32
sep = '\\';
#endif
size_t i = s.rfind(sep, s.length());
if (i != string::npos)
{
string filename = s.substr(i+1, s.length() - i);
size_t lastindex = filename.find_last_of(".");
string rawname = filename.substr(0, lastindex);
return(rawname);
}
return("");
}
int main(int argc, char** argv) {
string path = "/home/aymen/hello_world.cpp";
string ss = getFileName(path);
std::cout << "The file name is \"" << ss << "\"\n";
}
原文由 Aymen Alsaadi 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答494 阅读✓ 已解决
要提取没有扩展名的文件名,请使用 boost::filesystem::path:: stem 而不是丑陋的 std::string::find_last_of(“.”)