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();
}