首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QStringList中删除FilePath

从QStringList中删除FilePath
EN

Stack Overflow用户
提问于 2016-01-14 16:47:49
回答 2查看 250关注 0票数 0

我有一个包含完整文件路径的QStringList。但是这些文件路径不是标准格式,我在文件路径中有环境变量,例如%PATH_OF_VAR%/GEN/abc.txt。我正在使用fileName,但显然它不起作用。我想要做的是,我只需要从中获取fileName并将其保存在另一个QStringList中。从第2个QStringList中删除任何fileName时,需要从第1个QStringList中自动删除相应的文件路径

编辑:

代码语言:javascript
复制
Xmlget.load(String);
QStringList list;
QStringList preset_scr;
QString name;

xmlget.findAndDescend("INIT_SKRIPTE");
while(xmlget.findNext("SKRIPT"))
{
    preset_scr.append(xmlget.getString());
}
for(int i=0;i<preset_scr.count();i++)
{
    QFile file(preset_scr.at(i));
    name = file.fileName();
    list.append(name);
}
qDebug()<<list;

EDIT2:我通过使用QFileInfo而不是QFile来修剪工作,我不知道当第二个QStringList中有一些变化时如何更新第一个QStringList

EN

回答 2

Stack Overflow用户

发布于 2016-01-14 17:34:17

如果你的文件路径看起来总是像%PATH_OF_VAR%/GEN/abc.txt,那么你可以像这样填写第二个列表:

代码语言:javascript
复制
foreach(const QString& path, preset_scr) {
    QString name = preset_scr.at(i).split("/").last();
    list.append(name); 
}

第二。当你从第二个列表中删除字符串时,你可以像这样从第一个列表中删除路径(假设fileName是要删除的名称):

代码语言:javascript
复制
for(int i = preset_scr.count() - 1; i>=0; --i) {
    if(preset_scr.at(i).split("/").last() == fileName)
        preset_scr.removeAt(i);
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-14 17:37:17

您可以尝试迭代列表并拆分每个字符串,以仅获得filename:

代码语言:javascript
复制
QStringList preset_scr;
QStringList newList;
QString filename;

for( const auto & s : preset_scr ) {
    filename = s.split("/").last();
    newList.append(filename);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34785084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档