【发布时间】:2014-11-28 08:37:09
【问题描述】:
假设我有char buffer[64] 和uint32_t length,而buffer 可能会或可能不会以null 终止。如果它以空值终止,则缓冲区的其余部分将被空值填充。 length 变量保存缓冲区的长度。
我想将它复制到一个std::string 中,在字符串对象的末尾没有多余的空值。
最初,我尝试过:
std::string s(buffer, length);
当缓冲区最后被空值填充时复制额外的空值。
我能想到:
char buffer2[128];
strncpy(buffer2, buffer, 128);
const std::sring s(buffer2);
但这有点浪费,因为它复制了两次。
我想知道是否有更快的方法。我知道我需要进行基准测试以准确判断哪种方式更快......但我想看看其他一些解决方案,然后进行基准测试......
提前致谢。
【问题讨论】: