【发布时间】:2017-11-15 17:00:29
【问题描述】:
我需要从输入文本文件中提取带有扩展名的文件名到字符串向量。 输入文本文件比较杂乱,作为一些应用程序的配置文件。
我所知道的关于我试图提取的文件名的信息是它们前面有一个“file =”提及,文件名在“”或“”之间被引用。示例:文件 =“名称.abc”。我也不能保证间距是多少:它可能是 file="name.abc", file="name.abc" , file="name.abc"... 并且扩展名可以有不同的长度。
所以我尝试了以下代码:
std::vector<std::string> attachment_names;
std::istringstream words(text_content);
std::string word;
std::string pst_extension(".abc"); // My code should support any extension
while (words >> word)
{
auto extension_found = word.find(abc_extension);
if (extension_found != word.npos)
{
auto name_start = word.find("'") + 1;
//I am not even sure the file is quoted by ''
std::string attachment_name = word.substr(name_start, (extension_found + 3) - name_start + 1);
//Doing this annoys me a bit... Especially that the extension may be longer than 3 characters
attachment_names.push_back(attachment_name);
}
}
有更好的方法吗?是否有可能更多地依赖文件标题来支持任何扩展?
【问题讨论】:
-
等等,你在找代码审查吗?如果是这样,您可能想看看Code Review。
-
我不知道这个社区,谢谢伙计! :)
-
您可能想阅读那里的帮助中心,以确保您的问题确实与主题相关,并进行适当修改:) 谢谢
-
我会的!感谢您的建议!
标签: c++ file istringstream