在C ++中将整数转换为固定长度的字符数组

时间:2012-01-31 18:44:04

标签: c++ arrays char int

我有一个包含1-4位数字的整数x。如何将其转换为4个字符的数字数组(必要时用零填充)?也就是说,如果x4,我希望字符数组y包含0004

4 个答案:

答案 0 :(得分:4)

// Assume x is in the correct range (0 <= x <= 9999)
char target[5];
sprintf(target, "%04d", x);

答案 1 :(得分:2)

好吧,如果您确保向量中只有4个元素,我认为您可以使用以下内容:

  char result[4];
  for(int i=0;i<4;++i)
  {
    result[3-i] = (value % 10);
    value /= 10; 
  }

答案 2 :(得分:0)

尝试

char y[5];
sprintf(y, "%4d", x);

答案 3 :(得分:0)

这个号码的逻辑作用是什么?通常,你定义一个 名称基于逻辑角色的操纵器,并使用它。也许 像是这样的事情:

class serialno
{
    int myWidth;
public:
    serialno( int width ) : myWidth( width ) {}
    friend std::ostream& operator<<(
        std::ostream& stream, serialno const& manip )
    {
        stream.fill( '0' );
        stream.width( myWidth );
        return stream;
    }
};

然后你可以写:

std::cout << serialno( 4 ) << myNumber;

(更好的实现会保存流的格式化状态, 并在析构函数中恢复它,在完整结束时调用 表达。)

当然,要将它放入字符数组中,您可以使用 std::ostringstream而不是std::cout