比方说,我有char buffer[64]
和uint32_t length
和buffer
可能会或可能不会为空终止。如果空终止,则缓冲区的其余部分将填充空值。变量length
保存缓冲区的长度。将缓冲区或C字符串复制到std :: string中的最快方法
我想将它复制到std::string
而不会在字符串对象的末尾出现额外的空值。
本来,我想:
std::string s(buffer, length);
该副本时,缓冲区填满,并在最后零点额外的空值。
我能想到的:
char buffer2[128];
strncpy(buffer2, buffer, 128);
const std::sring s(buffer2);
但它是一种浪费,因为它的副本两次。
我想知道是否有更快的方法。我知道我需要进行基准测试,以确切知道哪种方式更快......但我想看看其他一些解决方案,然后进行基准测试......
在此先感谢。
我无法添加 '\ 0' 到端不幸。您的替代解决方案非常棒。谢谢! – Hei 2014-10-03 09:51:09