12

下面的小测试程序打印出来:

而SS号IS =3039

我希望用填充的左零打印出数字,使总长度为 8。所以:

和 SS 编号 IS =00003039(注意左侧填充的额外零)

我想知道如何使用操纵器和字符串流来做到这一点,如下所示。谢谢!

测试程序:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>

int main()
{

    int i = 12345;
    std::stringstream lTransport;

    lTransport << "And SS Number IS =" << std::hex << i << '\n';

    std::cout << lTransport.str();

}
4

3 回答 3

12

你看过图书馆的 setfill 和 setw 操纵器吗?

#include <iomanip>
...
lTransport << "And SS Number IS =" << std::hex << std::setw(8) ;
lTransport << std::setfill('0') << i << '\n';

我得到的输出是:

And SS Number IS =00003039
于 2010-03-02T19:35:11.237 回答
3

我会使用:

cout << std::hex << std::setw(sizeof(i)*2) << std::setfill('0') << i << std::endl;
于 2010-03-02T19:40:35.590 回答
1

您可以使用setwsetfill函数,如下所示:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <iomanip>

using namespace std;

int main()
{    
    int i = 12345;
    std::stringstream lTransport;

    lTransport << "And SS Number IS =" << setfill ('0') << setw (8)<< std::hex << i << '\n';    
    std::cout << lTransport.str();  // prints And SS Number IS =00003039    
}
于 2010-03-02T19:43:09.483 回答