C++ C++;std:string中的十六进制搜索失败

C++ C++;std:string中的十六进制搜索失败,c++,string,stl,hex,design-patterns,C++,String,Stl,Hex,Design Patterns,我有一个std:string。我想找到十六进制的模式“0x789c”。 根据stackoverflow中的另一个线程,我完成了以下操作: int nPosD = buffer.find("\x78\x9C"); 并尝试 int nPosD = buffer.find(std::string("\x78\x9C"),2); 没有成功!回报是-1!我的模式0x789c在我的字符串中!我已经用HexEdit软件测试过了 有人对此有想法吗 非常感谢:) 致以最诚挚的问候,以下内容适合我: char

我有一个std:string。我想找到十六进制的模式“0x789c”。 根据stackoverflow中的另一个线程,我完成了以下操作:

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

int nPosD = buffer.find(std::string("\x78\x9C"),2);
没有成功!回报是-1!我的模式0x789c在我的字符串中!我已经用HexEdit软件测试过了

有人对此有想法吗

非常感谢:)


致以最诚挚的问候,

以下内容适合我:

char data[] = {'A', 0x78, 0x9C};
string buffer(data, 3);
cout << buffer.find("\x78\x9C") << endl;
char数据[]={'A',0x78,0x9C};
字符串缓冲区(数据,3);

以下几点对我有用:

char data[] = {'A', 0x78, 0x9C};
string buffer(data, 3);
cout << buffer.find("\x78\x9C") << endl;
char数据[]={'A',0x78,0x9C};
字符串缓冲区(数据,3);
库特
将在缓冲区中查找从第三个字符(偏移量2)开始的字符串“\x78\x9c”。如果在该点或该点之后未显示,则返回-1。如果要从头搜索整个字符串,请去掉
2


将在缓冲区中查找从第三个字符(偏移量2)开始的字符串“\x78\x9c”。如果在该点或该点之后未显示,则返回-1。如果要从一开始搜索整个字符串,请去掉英特尔处理器中的
2

0x789c是0x9c 0x78,而不是0x78 0x9c。您确定您的十六进制编辑软件没有以小尾端(与字节顺序相反)显示字节吗?您的第一个错误是将二进制缓冲区写入字符串。
std::string
的用途是存储文本。如果您有二进制数据,请使用
std::vector
!!谢谢约阿希姆·伊萨克森!0x789c在英特尔处理器中是0x9c 0x78,而不是0x78 0x9c应该可以工作,您确定您的十六进制编辑软件没有以小尾端(字节顺序相反)显示您的字节吗?您的第一个错误是将二进制缓冲区写入字符串。
std::string
的用途是存储文本。如果您有二进制数据,请使用
std::vector
!!谢谢约阿希姆·伊萨克森!是的,在我的十六进制编辑器中有一个小小的endian视图!!谢谢约阿希姆·伊萨克森!是的,在我的十六进制编辑器中有一个小小的endian视图!!谢谢约阿希姆·伊萨克森!