下面的小测试程序打印出来:
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();
}
答案 0 :(得分:9)
你看过图书馆的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
答案 1 :(得分:3)
我会用:
cout << std::hex << std::setw(sizeof(i)*2) << std::setfill('0') << i << std::endl;
答案 2 :(得分:1)
#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
}