我有一个std:string。我想找到十六进制的模式“0x789c”。 根据stackoverflow中的另一个线程,我已经这样做了:
int nPosD = buffer.find("\x78\x9C");
并尝试了
int nPosD = buffer.find(std::string("\x78\x9C"),2);
没有成功!返回-1!我的模式0x789c在我的字符串中!我用HexEdit软件测试了它。
任何人都有这个想法吗?
非常感谢:)
最好的问候,
答案 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")
。