QProcess :: readAllStandardOutput () и переводы строки - PullRequest
0 голосов
/ 24 августа 2018

Я печатаю вывод из 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();

Полагаю, это проблема кодирования ..?

1 Ответ

0 голосов
/ 24 августа 2018

проблема вызвана тем, что 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();
}

Output:

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