c++ - QProcess::readAllStandardOutput() 和换行符

标签 c++ ubuntu qt5 qstring qbytearray

我正在打印 QProcess::readAllStandardOutput() 的输出(在 Ubuntu 18.04 上),它在其他方面工作正常,但 \n 字符实际上不是换行符,以某种方式从字面上显示为字符串的一部分:

/usr/local/lib/libpcl_search.so\n/usr/local/lib/libpcl_sample_consensus.so\n/usr/local/lib/libpcl_io.so\n/usr/local/lib/libpcl_segmentation.so\n/usr/local/lib/libpcl_common.so\n/usr/local/lib/libboost_random.so\n/usr/local/lib/libboost_math_tr1l.so

这是运行 find/-name "*so" 命令时输出的 QProcess,如下所示:

qDebug() << m_process->readAllStandardOutput();

我想这是一个编码问题..?

最佳答案

问题是因为 QDebug 将显示结束行和类似的字符,因为你传递给它们一个 QByteArray,如果你想看到你想要的输出然后使用 qPrintable:

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QProcess process;

    QObject::connect(&process, &QProcess::readyReadStandardOutput, [&process](){
        qDebug()<< qPrintable(process.readAllStandardOutput());
    });
    process.start("find / -name \"*so\"");

    return a.exec();
}

输出:

/snap/core/4917/lib/crda/libreg.so
/snap/core/4917/lib/i386-linux-gnu/ld-2.23.so
/snap/core/4917/lib/i386-linux-gnu/libBrokenLocale-2.23.so
/snap/core/4917/lib/i386-linux-gnu/libSegFault.so
/snap/core/4917/lib/i386-linux-gnu/libanl-2.23.so
/snap/core/4917/lib/i386-linux-gnu/libc-2.23.so
/snap/core/4917/lib/i386-linux-gnu/libcidn-2.23.so
...

关于c++ - QProcess::readAllStandardOutput() 和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006131/

相关文章:

c++ - 当目标是 Windows 时,gyp 中的“拷贝”不会复制整个文件夹

c++ - 奇怪的 GetWindowText();错误

java - 在ubuntu 10.10上安装jdk1.7.0

c++ - 在 if 语句中未设置 Qt 动态属性

c++ - 两个字符的 Endian 安全转换为 unsigned short

c++ - 使用 QEventLoop 调用函数

c++ - 即使通过引用捕获也会发生切片

c++ - 将类型与特征矩阵混合的错误

linux - 如何判断附加到 Azure 虚拟机的磁盘是否已加密?

ubuntu - 如何在 tmux 中更改默认的开始选择键?