C++ 是否从列表中删除字符串的特定格式?
我正在为Arduino编写一个程序,它以一种NMEA格式获取信息,该格式是从存储在列表C++ 是否从列表中删除字符串的特定格式?,c++,arduino,C++,Arduino,我正在为Arduino编写一个程序,它以一种NMEA格式获取信息,该格式是从存储在列表中的.txt文件读取的。我需要去掉以某些前缀$GPZDA、$GPGSA、$GPGSV开头的字符串,因为它们对我来说是无用的,因此我只需要$GPRMC和$GPGGA,它们包含一个基本的时间戳和我正在使用的所有位置。我希望使用尽可能少的外部库SPRINT、BOOST,因为DUE没有足够的空间 我真正需要的是从列表中删除不以特定前缀开头的行的方法,有什么想法吗 我目前使用的方法似乎用一个特定的字符串替换了整个输出,但
while (std::getline(GPS1,STRLINE1)){
ListOne.push_back("GPS1: " + STRLINE1 + "\n");
ListOne.sort();
ListOne.unique();
std::cout << ListOne.back() << std::endl;
GPSO1 << ListOne.back();
}
如果我理解正确的话,谢谢你,你想要一些前缀的白名单。 您可以使用查找它们,并使用一个小函数检查其中一个前缀是否匹配,例如:
#include <iostream>
#include <algorithm>
#include <string>
#include <list>
using namespace std;
int main() {
list<string> l = {"aab", "aac", "abb", "123", "aaw", "wws"};
list<string> whiteList = {"aa", "ab"};
auto end = remove_if(l.begin(), l.end(), [&whiteList](string item)
{
for(auto &s : whiteList)
{
auto res = mismatch(s.begin(), s.end(), item.begin());
if (res.first == s.end()){
return false; //found allowed prefix
}
}
return true;
});
for (auto it = l.begin(); it != end; ++it){
cout<< *it << endl;
}
return 0;
}
太好了,现在我只需要从文本文件中读取它。谢谢你,伙计。