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

C++ Hex search in std:string failed

本文关键字:十六进制 搜索 失败 C++ 中的 string std      更新时间:2023-10-16

我有一个std:string。我想找到十六进制的模式"0x789c"。根据stackoverflow中的另一个线程,我已经这样做了:

int nPosD = buffer.find("x78x9C");

并尝试

int nPosD = buffer.find(std::string("x78x9C"),2);

没有成功!回报是-1!我的模式0x789c在我的字符串中!我已经用HexEdit软件测试过了。

有人对此有想法吗?

非常感谢:)

问候,

int nPosD = buffer.find(std::string("x78x9C"),2);

将查找缓冲区中从第3个字符(偏移量2)开始的字符串"\x78\x9c"。如果它没有出现在该点或之后,它将返回-1。如果要从头开始搜索整个字符串,请去掉2

以下对我有效:

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

它应该打印"1"。它在没有首字母A的情况下也能正常工作。你可能把字符串设置错了。它可能在ascii中包含"0x789c",而不是二进制,在这种情况下,您希望执行find("0x789c")