【问题标题】:Execute Command with QProcess and Store result in QStringList使用 QProcess 执行命令并将结果存储在 QStringList 中
【发布时间】:2020-07-12 09:53:50
【问题描述】:

我编写了以下函数,它执行一个 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 或类似列表中,我可以将这些名称单独附加到组合小部件中。我该怎么做?

【问题讨论】:

标签: c++ qt


【解决方案1】:

你可以只使用 qstring 拆分:

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

如果您需要更“智能”的拆分,可以传入正则表达式:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多