Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++ QStringList从字符串中删除空格_C++_String_Qt - Fatal编程技术网

C++ QStringList从字符串中删除空格

C++ QStringList从字符串中删除空格,c++,string,qt,C++,String,Qt,修剪字符串列表中所有字符串的最佳方法是什么?我尝试使用替换字符串: QStringList somelist; // ... // // add some strings // ... // somelist.replaceInStrings(QRegExp("^\s*"),""); 但是没有删除空格 QRegExp("^\s*") \是特殊符号,所以当需要在字符串中插入斜杠时,必须使用\\ QRegExp("^\\s*") 另一个答案已经告诉你,你需要避开反斜杠。如果还希望更改表达式以匹

修剪字符串列表中所有字符串的最佳方法是什么?我尝试使用替换字符串:

QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");
但是没有删除空格

QRegExp("^\s*")
\是特殊符号,所以当需要在字符串中插入斜杠时,必须使用
\\

QRegExp("^\\s*")

另一个答案已经告诉你,你需要避开反斜杠。如果还希望更改表达式以匹配一个或多个空格,而不是0个或多个空格,请尝试使用: QRegExp(“^\\s+”)

QStringList somelist;
for(int i=0;i
如果可以使用C++11(qt5 qmake项目文件:
CONFIG+=C++11
),请尝试以下简短代码片段:

QStringList somelist;
// fill list
for(auto& str : somelist)
    str = str.trimmed();
它将使用一个引用在列表中运行,并且
trimmed
函数调用结果将分配回原始列表中的项

不使用C++11您可以将
Qt
方法与Java风格的可变迭代器结合使用:

QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
    it.next();
    it.value() = it.value().trimmed();
}
QMutableListIterator它(somelist);
while(it.hasNext()){
it.next();
it.value()=it.value().trimmed();
}
后一种方法非常完美,例如,如果您希望在修剪空字符串后删除空字符串

QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
    it.next();
    it.value() = it.value().trimmed();
    if (it.value().length() == 0)
        it.remove(); 

}
QMutableListIterator它(somelist);
while(it.hasNext()){
it.next();
it.value()=it.value().trimmed();
if(it.value().length()==0)
it.remove();
}

删除是有效的,

修剪意味着删除字符串前面和末尾的空格。到目前为止,所有解决方案仅删除前面的空间

以下是真正的修剪解决方案:

str_list.replaceInStrings(QRegExp("^\\s+|\\s+$"), "");

虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/审阅者:
str_list.replaceInStrings(QRegExp("^\\s+|\\s+$"), "");