Небольшая тестовая программа ниже распечатывает:
И число SS =3039
Я хотел бы, чтобы число распечатало с заполненными левыми нулями, таким образом, что общая длина равняется 8. Так:
И Число SS =00003039 (заметьте дополнительные нули, оставленные дополненными),
И я хотел бы знать, как сделать это использование манипуляторы и stringstream как показано ниже.Спасибо!
Тестовая программа:
#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();
}
Вы смотрели на манипуляторы 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
Вы можете использовать функции setw и setfill следующим образом:
#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
}
Я бы использовал:
cout << std::hex << std::setw(sizeof(i)*2) << std::setfill('0') << i << std::endl;