c++ - 在 C++ 中构造左填充的 NULL 固定长度字符数组的最有效方法是什么?

标签 c++ linux gcc low-level

如果你有这样的事情:

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/

相关文章:

c++ - 交换算法赋予所有相同的值

c++ - 头文件中定义的函数实现是否编译成静态库?

c++ - 空基类是否会影响派生类的布局?

linux - 在 linux 中计算页面错误的结果令人困惑

Linux 和 Primesense

c++ - 函数返回类型说明符 c++type 中的变量声明

c++ - 提高指数移动平均整数乘法和除法的准确性

php - 允许 php rwx 使用 mkdir() 创建的目录

c - 原子写入 64kB

c++ - iostream vs ostream 有什么不同?