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

C++ 删除字符串中的空格

C++ 删除字符串中的空格,c++,qt,qstring,C++,Qt,Qstring,我有一个字符串很多\n空白\r\n,我已经简化了它,但是我仍然需要去掉字符串中的其他空格 QString str = " lots\t of\nwhitespace\r\n "; str = str.simplified(); 我可以这样做erase_all(str,”)在boost中,但我想保持在qt中。尝试以下操作: str.replace(" ",""); 第一个将所有空白字符更改为ASCII 32的单个实例,第二个将删除该实例。选项1: 简化空白,然后将其删除 根据 [QStrin

我有一个字符串
很多\n空白\r\n
,我已经简化了它,但是我仍然需要去掉字符串中的其他空格

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.simplified();
我可以这样做
erase_all(str,”)在boost中,但我想保持在qt中。

尝试以下操作:

str.replace(" ","");

第一个将所有空白字符更改为ASCII 32的单个实例,第二个将删除该实例。

选项1

简化空白,然后将其删除

根据

[
QString::simplified
]返回一个字符串,该字符串从开头和结尾删除了空格,并将每个内部空格序列替换为单个空格

字符串简化后,可以轻松删除空白

str.simplified().remove(' ')
选项2

使用
QRegExp
捕获
删除中所有类型的空白

QRegExp space("\\s");
str.remove(space);
注释

  • OPs字符串有不同类型的空白(制表符、回车符、换行符),所有这些都需要删除。这是棘手的部分

  • qt5.6中引入了
    QString::remove
    ;在5.6之前,可以使用
    QString::replace
    并将空白替换为空字符串
    ”来实现删除


您可以使用正则表达式省略对
simplified()
的调用:

str.replace(QRegularExpression("\\s+"), QString());

我没有测量哪种方法更快。我想这个正则表达式的性能会更差。

这里需要简化()吗?当然,删除(“”)会起作用吗?@Ironlayer,这取决于方法,是的。我已经为我的答案添加了澄清,并提供了一个不需要简化的替代解决方案。在这种情况下,您可能应该制作一个简单的测试用例并报告一个bug,因为根据文档,它仍然应该。对不起。我的错。我没有包括QString
str.replace(QRegularExpression("\\s+"), QString());