Mám pole unsigned char, které slouží jako příchozí buffer pro sériovou komunikaci. Příchozí data jsou binární. Je to sled instrukcí a dat. Každá instrukce přichází jako 3 byty - 0xAA, 0xAA a číslo instrukce (0-255); za ní podle typu instrukce následuje několik datových bytů. Na parsování této komunikace jsem použil třídu z STL basic_string<unsigned char>. Můj kód vypadá zhruba takto:
basic_string<unsigned char> data, pattern;
//nakopírování dat do data
//příprava vzoru pro hledání
pattern.push_back(0xAA);
pattern.push_back(0xAA);
pattern.push_back(instruction);
//hledání:
size_t pos;
if(pos = data.find(pattern) != basic_string<unsigned char>::npos)
{
return pos + 3;//Vrátí index v poli
}
Tento kód mi však nefunguje. Když se podívám do obsahu proměnných v debuggeru, tak data má např. hodnotu {0xAA, 0xAA, 0x1, 0, 0, 0, 0, 0, 0, 0, 0, 0xAA, 0xAA, 0x2, 0x78}, pattern {0xAA, 0xAA, 0x2}. Jenže metoda find mi vrací 1, přestože by měla vracet 11...
Kde dělám chybu/co mám špatně?