如果你有这样的事情:
char buf[10];
并且需要创建一个像这样的函数:
void pad(char* dest, const char* src, size_t destlen, size_t srclen);
所以 pad(dest, "hello", 10, 5)
将导致 "hello\0\0\0\0\0"
我不确定最有效的方法是使用 gcc 4.x:
snprintf
然后 bzero
?
operator<<
与 setfill
然后和 friend memcpy
?
对于这种特殊情况,性能很重要。提前致谢!
最佳答案
memcpy
后接 memset
怎么样?
void pad(char* dest, const char* src, size_t destlen, size_t srclen)
{
memcpy(dest, src, srclen);
memset(dest + srclen, 0, destlen - srclen);
}
关于c++ - 在 C++ 中构造左填充的 NULL 固定长度字符数组的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4752475/