我有一个接收二进制数据的套接字,我将该数据转换为字符串,包含值和字符串值。 (例如“0x04,h,o,m,e,......”)
如何在该字符串中搜索十六进制子字符串?
即。我想搜索“0x02,0x00,0x01,0x04”。
我要求cthon版本的python'fooString.find(“\ x02 \ x00 \ x01 \ x04”)'
感谢所有人:)
答案 0 :(得分:3)
字符串的良好文档在这里:
http://www.sgi.com/tech/stl/basic_string.html
十六进制标记就像Python一样传递(你认为Python从哪里得到了语法) 字符\ x ??是一个单一的十六进制字符。
#include <iostream>
#include <string>
int main()
{
std::cout << (int)'a' << "\n";
std::string x("ABCDEFGHIJKLMNOPabcdefghijklmnop");
std::string::size_type f = x.find("\x61\x62"); // ab
std::cout << x.substr(f);
// As pointed out by Steve below.
//
// The string for find is a C-String and thus putting a \0x00 in the middle
// May cause problems. To get around this you need to use a C++ std::string
// as the value to find (as these can contain the null character.
// But you run into the problem of constructing a std::string with a null
//
// std::string find("\0x61\0x00\0x62"); // FAIL the string is treated like a C-String when constructing find.
// std::string find("\0x61\0x00\0x62",3); // GOOD. Treated like an array.
std::string::size_type f2 = x.find(std::string("\0x61\0x00\0x62",3));
}
答案 1 :(得分:2)
c ++ String对象中有很多查找选项,比如
查找在字符串(公共成员函数)中查找内容
rfind 在字符串(公共成员函数)中查找最后一次出现的内容
find_first_of 在字符串中查找字符(公共成员函数)
find_last_of 从结尾处查找字符串中的字符(公共成员函数)
find_first_not_of 在字符串中找不到字符
find_last_not_of 从结尾处查找字符串中缺少字符(公共成员函数)
http://www.cplusplus.com/reference/string/string/
转到上面的链接,查看哪些适合您
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试这样的事情:
char find[] = {0x02, 0x04, 0x04, 0x00};
int pos = strstr(inputStr, find);
请记住,0x00
为空,即字符串结束。因此,如果您的来源或搜索中包含这些内容,则无法找到您要查找的内容,因为strstr
将在第一个空格中停止。