将char拆分为char数组

时间:2017-05-26 11:25:39

标签: c++ arrays string char substring

我有一个字符串:

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;

看起来像这样?

2 个答案:

答案 0 :(得分:3)

使用std::string然后,您可以使用string::substr执行此操作:

gets_s

然后比较可以这么简单:

wchar_t

遵循方法不会影响性能。编译优化标志,你会没事的。我怀疑你是这里过早优化的受害者。

答案 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风格的字符串!