循环格式化数字

dav*_*909 4 c++ numbers generator string-formatting

我想列出来自0000-9999的所有数字,但是我无法保持零位.

我试过了:

for(int i = 0; i <= 9999; ++i)
{
cout << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)

但我得到:1,2,3,4..ect如何使它成为0001,0002,0003 .... 0010等

Def*_*ult 11

请参阅setfill以指定填充字符,setw用于指定最小宽度.

你的案子看起来像:

for(int i = 0; i <= 9999; ++i)
{
    cout << setfill('0') << setw(4) << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)

  • @johnsyweb:它自然而然地来了:) (3认同)
  • 在回答问题时纠正缩进的+1. (2认同)
  • @ArunSaha`std :: endl()`是一个函数,它的作用是返回一个换行符并刷新流.您可能希望也可能不希望刷新流.在大多数情况下,我们并不真正关心那个级别的事情,我们在两者之间任意选择.但是如果我们不刷新,即如果我们使用`'\n'而不是`std :: endl`那么事情可能会更快一些.这是因为我们写入流的缓冲区而不是输出设备.通过写入缓冲区,我们延迟写入输出设备.与写入内存中的缓冲区相比,通常IO设备的写入成本很高. (2认同)