C++ 什么';这是在C+;中构造带空固定长度字符的左填充数组的最有效方法+;?
如果您有以下情况:C++ 什么';这是在C+;中构造带空固定长度字符的左填充数组的最有效方法+;?,c++,linux,gcc,low-level,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” 我不确定最有效的方法是使用gcc 4.x: snprintf然后bzero operator那么memcpy后跟memset怎么样 void pad(char* dest, const char*
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”
我不确定最有效的方法是使用gcc 4.x:
snprintf
然后bzero
operator那么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);
}
那么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);
}
您可以像这样使用memcpy
和memset
void pad(char* dest, const char* src, size_t destlen, size_t srclen)
{
memcpy(dest, src, srclen);
memset(dest+srclen, '\0', dstlen - srclen);
}
当然,您还应该检查是否可以将src
放入dst
您可以使用memcpy
和memset
等
void pad(char* dest, const char* src, size_t destlen, size_t srclen)
{
memcpy(dest, src, srclen);
memset(dest+srclen, '\0', dstlen - srclen);
}
当然,您还应该检查是否可以将src
放入dst
“我不确定这样做最有效的方法是什么。”尝试两种方法,看看哪一种更快?“我不确定这样做最有效的方法是什么。”两个都试一下,看看哪一个更快?你比我快50秒:你比我快50秒:汉克斯,我会确定这些的基准,但我同意这是实现这一点最直接的方法。谢谢,我会确定这些的基准,但我同意,这将是实现这一目标最直接的方式。