我有一个字符串:
uint8_t word[40] = "a9993e364706816aba3e25717850c26c9cd0d89d";
我需要以某种方式将其拆分为char数组,所以它看起来像这样:
uint32_t hfFile[5];
hfFile[0] = 0xa9993e36;
hfFile[1] = 0x4706816a;
hfFile[2] = 0xba3e2571;
hfFile[3] = 0x7850c26c;
hfFile[4] = 0x9cd0d89d;
后来我想检查一下,其他数组元素是否等于hfFile的元素。
我的问题是,我不知道如何从字符串中提取精确的部分,如果
,它将如何工作?another_array[0] = 0xa9993e36;
看起来像这样?
答案 0 :(得分:3)
使用std::string
然后,您可以使用string::substr
执行此操作:
gets_s
然后比较可以这么简单:
wchar_t
遵循c++方法不会影响性能。编译优化标志,你会没事的。我怀疑你是这里过早优化的受害者。
答案 1 :(得分:2)
您可以这样做:
int length = strlen(word);
for(int i = 0; (i*8) < length; i++)
{
strncpy(hfFile[i], word + i*8, 8);
}
如果你想将这些hfFile字符串与another_array[0] = "0xa9993e36"
进行比较,你可以这样做:
if(strncmp(hfFile[0], another_array[0] + 2, 8) == 0) ...
+2
用于在0x
another_array
请注意,此代码不包含任何错误检查。
另请注意,我建议使用std::string
而不是C风格的字符串!