假设我有一个unsigned char
缓冲区,如下所示:
unsigned char buffer = {'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'}
基本上我只想抓住A和B,并将它们打包成这样的新缓冲区:
unsigned char buffer2 = {'A', 'B', 'A', 'B', 'A', 'B' ... etc
除了循环遍历每个元素之外,还有一种有效的方法吗?您可以使用memcpy
或memset
吗?
谢谢!
答案 0 :(得分:0)
我从未使用过memcpy,但我会这样做:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class Modulo3
{
public:
Modulo3();
bool operator()(const char c);
private:
int num_;
};
Modulo3::Modulo3()
{
num_ = 0;
}
bool Modulo3::operator()(const char c)
{
return num_++ % 3 == 0;
}
int main()
{
string test = "ABCABCABC";
Modulo3 func;
remove_if(test.begin(),test.end(),func);
return 0;
}
矢量,列表等的代码相同。
答案 1 :(得分:0)
如果你的数据按照例子的方式排序,你可以循环增加3并复制前两个字节。否则,你无法循环每一个值。