QProcess::readAllStandardOutput() 和换行符

QProcess::readAllStandardOutput() and line feeds

本文关键字:换行符 readAllStandardOutput QProcess      更新时间:2023-10-16

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

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

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

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
...