这是我从未擅长的 C/C++ 领域之一。
我的问题是我有一个最终需要包含一些空字符的字符串。将所有内容都视为 char 数组(或字符串)是行不通的,因为当他们找到第一个 null 时,事情往往会崩溃。所以我想,好吧,我会切换到 uint8_t,所以一切都只是一个数字。我可以根据需要移动东西,并在我准备好时将其转换回字符。
我现在的主要问题是:如何将字符串的一部分复制到 uint8_t 缓冲区?
实际上,我想做类似的事情:
std::string s = "abcdefghi";
uint8_t *val = (uint8_t*)malloc(s.length() + 1);
memset(val, 0, s.length() + 1);
// Assume offset is just some number
memcpy(val + offset, s.substr(1, 5).c_str(), 5);
显然,当我尝试这个时,我得到了一个错误。在 memcpy 的第一个参数中可能存在某种诡计(我在网上看到 (*(uint8_t*)) 之类的东西,但不知道这意味着什么)。
有什么帮助吗?
当我在这里时,我怎样才能轻松地将其转换回 char 数组?只是将 uint8_t 指针静态转换为 char 指针?
多谢。