filter函数没有该重载
时间: 2023-06-30 12:21:50 浏览: 44
非常抱歉,我的回答有误。QStringList的filter()函数没有该重载。你可以使用STL算法库中的remove()和erase()函数结合QString的isEmpty()函数来实现去除空字符串的操作,示例如下:
```
#include <algorithm>
#include <QDebug>
int main()
{
QStringList list = {"Hello", "", "world", "", "!"};
list.erase(std::remove_if(list.begin(), list.end(), [](const QString& str){ return str.isEmpty(); }), list.end());
qDebug() << list;
return 0;
}
```
这样就可以将包含空字符串的QStringList过滤掉,得到一个只包含非空字符串的QStringList,其中元素为"Hello"、"world"和"!"。
相关问题
D:\ProgramFiles\PCL1.12.1\include\pcl-1.12\pcl\filters\impl\filter.hpp:74: error: C2672: “isfinite”: 未找到匹配的重载函数
根据引用\[1\]和引用\[2\]的内容,你遇到的问题是在编译过程中出现了一个错误。具体来说,错误信息指出在文件D:\ProgramFiles\PCL1.12.1\include\pcl-1.12\pcl\filters\impl\filter.hpp的第74行,出现了一个C2672错误,即未找到匹配的重载函数"isfinite"。
解决这个问题的可能方案是将包含文件的路径写得更详细一些,例如将路径写至vtk-8.2:C:\Program Files\PCL 1.11.0\3rdParty\VTK\include\vtk-8.2。这样做可能会解决你遇到的问题。\[1\]
希望这个解决方案对你有帮助!如果还有其他问题,请随时提问。
#### 引用[.reference_title]
- *1* *2* [pcl 遇到的问题](https://blog.csdn.net/tang330023555/article/details/125977494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
int MsgProxy::RegNotify( INT32 nId, MsgNotify* pNotify, google::protobuf::MessageLite &message, const char *filter ) { int result = 0; result = RegNotify( nId, pNotify, filter ); if( 0 == result ) { result = mpClient->RegProtoNotify( nId, &message ); mpClient->SetProtocolType( E_USE_PROTO ); } return result; }
这是一个名为MsgProxy的类中的RegNotify函数的重载版本。除了之前提到的nId、pNotify和filter参数外,它还接受一个google::protobuf::MessageLite类型的引用参数message。
函数首先初始化result为0。然后调用之前定义的RegNotify函数,将nId、pNotify和filter传递给它,并将返回的结果赋值给result。
接下来进行条件判断,如果result为0,表示之前的RegNotify注册成功,然后调用mpClient对象的RegProtoNotify函数,将nId和message的地址传递给它。最后调用mpClient对象的SetProtocolType函数,将协议类型设置为E_USE_PROTO。
最后,函数返回result,表示整个注册过程的结果。