C ++ Hex поиск в std: string не удался - PullRequest
1 голос
/ 28 февраля 2012

У меня есть строка std:Я хотел бы найти шаблон "0x789c" в шестнадцатеричном формате.Согласно другому потоку в stackoverflow, я сделал это:

int nPosD = buffer.find("\x78\x9C");

и попытался

int nPosD = buffer.find(std::string("\x78\x9C"),2);

Нет успеха! Возвращение -1! Мой шаблон 0x789c в моей строке!Я протестировал его с программным обеспечением HexEdit.

У кого-нибудь есть идеи для этого?

Большое спасибо:)

С наилучшими пожеланиями,

Ответы [ 2 ]

1 голос
/ 28 февраля 2012
int nPosD = buffer.find(std::string("\x78\x9C"),2);

будет искать строку "\ x78 \ x9c", начиная с 3-го символа (смещение 2) в буфере.Если он не появится в или после этой точки, он вернет -1.Если вы хотите найти всю строку с самого начала, избавьтесь от 2

0 голосов
/ 28 февраля 2012

У меня работает следующее:

char data[] = {'A', 0x78, 0x9C};
string buffer(data, 3);
cout << buffer.find("\x78\x9C") << endl;

Печатает "1" как надо.Это работает также без начального A. Возможно, вы неправильно указали строку.Он может содержать «0x789c» в ascii вместо двоичного, в этом случае вы хотите сделать find("0x789c").

...