C++ 将字节数组附加到字符串c++;有效地

C++ 将字节数组附加到字符串c++;有效地,c++,arrays,memory,C++,Arrays,Memory,我正在处理几个字节数组块(uint_8),并将它们附加到一个字符串(my_string)。为了提高效率,我已经为我的字符串保留了足够多的字节 my_string.reserve(more_than_enough_bytes); 我正在尝试附加每个块,如以下函数所示: bool MyClass::AppendToMyString(uint_8* chunk, size_t chunk_num_bytes) { memcpy(const_cast<uint_8*>(my_strin

我正在处理几个字节数组块(
uint_8
),并将它们附加到一个字符串(
my_string
)。为了提高效率,我已经为我的字符串保留了足够多的字节

my_string.reserve(more_than_enough_bytes);
我正在尝试附加每个块,如以下函数所示:

bool MyClass::AppendToMyString(uint_8* chunk, size_t chunk_num_bytes) {
  memcpy(const_cast<uint_8*>(my_string.data()), chunk, chunk_num_bytes);
  return true;
}
bool MyClass::AppendToMyString(uint\u 8*块,size\u t chunk\u num\u字节){
memcpy(const_cast(my_string.data())、chunk、chunk_num_字节);
返回true;
}

但问题是
memcpy
不会更新
myu字符串的大小。所以,下次调用这个函数时,我不知道最后一个元素在哪里,只使用一个单独的变量。有什么想法吗?

std::string
有一个方法可以解决这个问题。大致如下:

void append_chunk (std::string &s, const uint8_t* chunk, size_t chunk_num_bytes)
{
    s.append ((char *) chunk, chunk_num_bytes);
}

您应该使用my_string.append方法,这就是它的设计目的<代码>我的字符串.append(chunk,chunk\u num\u字节)
您可能需要从
uint\u 8*
转换到
char*
我很惊讶
memcpy(我的字符串,chunk,chunk\u num\u字节)编译。什么类型是我的字符串?我一直假设std::string
。该页面中的重载4应该为您优化为
memcpy
string'
s
size
length
方法保证有效。这意味着在调用
size
时,
string
无法运行并计算第一个空值之前的字符数。它需要能够在修改
字符串时设置大小。由于
memcpy
不知道它对
字符串的操作,它只看到它应该写入的地址,因此无法更新
字符串的大小。