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

时间:2012-02-27 21:45:34

标签: 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软件测试了它。

任何人都有这个想法吗?

非常感谢:)

最好的问候,

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

以下适用于我:

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

它应该打印“1”。它没有初始A也可以。你可能设置了你的字符串错误。它可能包含ascii中的'0x789c'而不是二进制,在这种情况下你想要find("0x789c")