にQSTRINGを分割するにはどうすればよいのC++私はQtの中に新しい行に文字列をSpliting新しいライン
QSTRINGがある
Qstring str = "diskinfo: Node: ASHUTOSH-PC, Description: Local Fixed Disk, FreeSpace: 418581491712, Name: C:, Size : 499875049472 Node: ASHUTOSH-PC, Description: CD-ROM Disc, FreeSpace: , Name: D:, Size : Node: ASHUTOSH-PC, Description: Local Fixed Disk, FreeSpace: 324982935552, Name: E:, Size : 487687450624 Node: ASHUTOSH-PC, Description: CD-ROM Disc, FreeSpace: 0, Name: F:, Size : 553459712"
アウト期待プットは、それが必要であること
"diskinfo: Node: ASHUTOSH-PC, Description: Local Fixed Disk, FreeSpace: 420842713088, Name: C:, Size : 499875049472
Node: ASHUTOSH-PC, Description: CD-ROM Disc, FreeSpace: , Name: D:, Size :
Node: ASHUTOSH-PC, Description: Local Fixed Disk, FreeSpace: 324858568704, Name: E:, Size : 487687450624
Node: ASHUTOSH-PC, Description: CD-ROM Disc, FreeSpace: 0, Name: F:, Size : 553459712"
です空白が続くコンマがないときにスペースがある場合にのみ分割されますか?つまり、すべての行でNodeで開始する必要がありますか?これはQtの中で行われることになっている方法いずれかの助けが私のコードが書かれている次のようになりました
をC++ことができます。
QString Utils::getDiskSpace()
{
static QString diskSpaceCmd (qgetenv("WINDIR")
+ "\\system32\\wbem\\wmic logicaldisk get name, freespace, size, description /format:csv");
QProcess proc;
QByteArray qba;
QString out_str;
QString newStr;
proc.start(diskSpaceCmd);
if(proc.waitForFinished(-1))
{
qba = proc.readAllStandardOutput();
qba = qba.trimmed();
qba =qba.replace('\r',' ');
QString myString =qba;
QStringList myStringList = myString.split("\n");
QStringList descriptions = myStringList[0].split(",");
for(int index = 1;index < myStringList.length();index++)
{
QStringList data = myStringList[index].split(",");
QStringList out;
for(int ind_2 = 0; ind_2 < data.length(); ind_2++)
out.push_back(descriptions[ind_2] + ": " +data[ind_2]);
out_str += out.join(", ");
}
out_str = out_str.replace("Node:", "\nNode:");
QStringList list;
if(!out_str.startsWith('\n'))
out_str+=' ';
for(int i = 0; i < out_str.count('\n'); ++i){
list << out_str.section('\n', i, i, QString::SectionIncludeTrailingSep).simplified();
}
foreach(QString out_str, list)
QLOG_DEBUG()<<"Out_Str" << out_str;
}
QString diskSpace(out_str);
return (diskSpace);
}
['QString :: replace'](http://doc.qt.io/qt-5/qstring.html#replace-8)? –
私たちは置き換える必要があります私は、スペースだけがある場合にのみ分割したいものを置き換えたくありません。すなわち、単語の前にスペースがあります。私はそのスペースでのみ分離したいですか?スペースは、それ以前の(カンマ)、(セミコロン)のような他の区切り文字を持つべきではありません。 – cyley
'replace(" Node: "、" \ nNode: ")' - これは文字列の先頭に影響します'"diskinfo"の後ろに)。 –