使用QProcess执行命令,并将结果存储在QStringList中

Execute Command with QProcess and Store result in QStringList

本文关键字:存储 结果 QStringList QProcess 执行 命令 使用      更新时间:2023-10-16

我编写了以下函数,该函数执行windows枚举命令以获取共享文件夹,并将结果存储在QString中。

QProcess p;
p.setProgram("wmic");
p.setArguments({"share", "get", "name"});
p.start();
if (!p.waitForFinished()) {
return;
}
const QString output = p.readAllStandardOutput();
qDebug () << output;
const QString error = p.readAllStandardError();
if (!error.isEmpty()) {
qDebug () << error;   
}

但是输出有很多分隔符,比如";\n\r"。。。所以我想从字符串输出中去掉所有这些分隔符。在下一步中,您认为我们将得到如下结果:

C$
D$
E$
IPC$

所以我想把这些名字保存在一个QStringList中,或者类似于一个列表的东西中,我可以把这些名字独立地附加在组合窗口小部件中。我该怎么做?

您可以使用qstring-split:

QStringList list = output.split("n", QString::SkipEmptyParts);

如果你需要更多的";"智能";可以在正则表达式中传递的拆分:

list = output.split(QRegExp("...some regex..."));

跳过空的部分只是";删除"/忽略任何可能为空的值-我认为在这种情况下不需要