Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将qbyte数组中的一条长线在qt中拆分为多行_C++_Qt - Fatal编程技术网

C++ 将qbyte数组中的一条长线在qt中拆分为多行

C++ 将qbyte数组中的一条长线在qt中拆分为多行,c++,qt,C++,Qt,我编写了以下代码 QString WctUtils::getDiskSpace( ) { static QString diskSpaceCmd ( qgetenv("WINDIR") + "\\system32\\wbem\\wmic LOGICALDISK GET Name,FreeSpace,Size,Description/value"); QProcess proc;

我编写了以下代码

    QString WctUtils::getDiskSpace( )
     {
         static QString diskSpaceCmd ( qgetenv("WINDIR")
                           + "\\system32\\wbem\\wmic LOGICALDISK GET Name,FreeSpace,Size,Description/value");

        QProcess proc;
        QByteArray qba;

        proc.start(diskSpaceCmd);


       if(proc.waitForFinished(-1))
         {
          qba = proc.readAllStandardOutput();
          qba = qba.trimmed();
          qba.replace('\r', ' ');
          qba.replace('\n',' ');
          QList<QByteArray> lines = qba.split('\n');

        }

       QString diskSpace(qba);
       return (diskSpace);
    }
预期产量为

      {
       "Service": "20170131184024",
       "diskinfo": "Description=Local Fixed Disk   FreeSpace=421098377216   Name=C:   Size=499875049472       
                   Description=CD-ROM Disc   FreeSpace=   Name=D:   Size=    
                   Description=Local Fixed Disk   FreeSpace=324859035648   Name=E:   Size=487687450624         
                   Description=CD-ROM Disc   FreeSpace=0   Name=F:   Size=553459712"
    }

如何在多行中获取此磁盘信息行?如何将qbyte数组的一部分拆分为多行?

您自己从字符串中删除所有
\n
符号,然后立即尝试使用
\n
分隔符拆分它,当然它不会工作,因为字符串中没有
\n

qba.replace('\n',' ');
QList<QByteArray> lines = qba.split('\n');

查找
“Description=“
并将其转换为
”\n Description=“
”。但如果不首先用空格替换现有的换行符,可能会更好地解决这个问题。或者至少不是所有的(如果原始字符串中有额外的换行符的话);QList line=qba.split('\n');它仍然不起作用
qba.replace('\n',' ');
QList<QByteArray> lines = qba.split('\n');
QList<QByteArray> lines = qba.split('\n');
for(const QByteArray& line : lines)
{
    if(line.startsWith("Description")
        cout << "\n" << line.toStdString();
    else
        cout << line.toStdString();
}