在 C++ 中将整数转换为固定长度的字符数组
Convert an integer to a fixed-length character array in C++
我有一个整数x
,其中包含一个 1-4 位数字。如何将其转换为 4 个字符的数字数组(必要时用零填充(?也就是说,如果x
是4
,我希望字符数组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
.
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符