我想填充一个给定的char数组,使其成为一个15个字符的数组。
例如。如果数组包含两个字符1,2则应填写13 0
个字符以在000000000000012中填充,如果包含5个字符,则应填充10 0个字符。结果数组应始终包含15个字符。
找到一个解决方案here,但是对于stl字符串我需要类似的char数组解决方案。请帮忙。 我试过的是:
char moneyArray[256];
memset(moneyArray, 0, 256);
for(int i=0;i<(15-strlen(moneyArray))-1;i++)
sprintf(moneyArray,"0%s",moneyArray);
但我正在寻找标准解决方案,如果可能的话,使用std函数可能会?
答案 0 :(得分:2)
您可以使用以下pad
功能:
#include <iostream>
#include <cstring>
void pad(char *s, int n, int c) {
char *p = s + n - strlen(s);
strcpy(p, s);
p--;
while (p >= s) { p[0] = c; p--; }
}
int main () {
char b[16] = "123";
pad(b, 15, '0');
std::cout << b << std::endl;
return 0;
}
答案 1 :(得分:2)
如果你对std::string
很好(我认为你应该这样),你可以使用它的填充构造函数:
char s[] = "12";
std::string padded = std::string( (15 - strlen(s) ), '0').append(s);
当然,您可能需要首先检查strlen(s) > 15
。
答案 2 :(得分:1)
你有各种选择;其中一个将是(再次假设我们已经知道moneyArray
包含一个字符串,并且至少是一个16字节的缓冲区):
size_t len = strlen(moneyArray);
memmove(moneyArray + 15 - len, moneyArray, len + 1);
memset(moneyArray, '0', 15 - len);