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

Convert an integer to a fixed-length character array in C++

本文关键字:数组 字符 C++ 整数 转换      更新时间:2023-10-16

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

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

好吧,如果您保证向量中只有 4 个元素,我认为您将能够执行以下操作:

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

尝试

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

数字的逻辑作用是什么? 通常,您将定义一个名称基于逻辑角色的操纵器,并使用它。 或像这样:

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.