C++ 如何在puttime中设置宽度格式?

C++ 如何在puttime中设置宽度格式?,c++,formatting,width,strftime,iomanip,C++,Formatting,Width,Strftime,Iomanip,假设我想打印一些简单的东西,如下表: January 1 February 2 March 3 April 4 May 5 June 6 July 7 August 8 September 9 October 10 November 11 December 12 January 1 February 2 March 3 April 4 May 5 June 6 July 7

假设我想打印一些简单的东西,如下表:

January   1
February  2
March     3
April     4
May       5
June      6
July      7
August    8
September 9
October   10
November  11
December  12
January   1
February  2
March     3
April     4
May       5
June      6
July      7
August    8
September 9
October   10
November  11
December  12
我想这样做:

for(tm i{ 0, 0, 0, 1, 0 }; i.tm_mon < 12; ++i.tm_mon) cout << put_time(&i, "%-9B") << i.tm_mon + 1 << endl;

对于(tm i{0,0,0,1,0};i.tm_-mon<12;++i.tm_-mon)cout而言,以下操作也将起作用

for(tm i{ 0, 0, 0, 1, 0 }; i.tm_mon < 12; ++i.tm_mon)
    {
        std::stringstream oss;
        oss << std::put_time(&i, "%B");
        string str = oss.str();
        cout << std::setiosflags(std::ios::left) << setw( 10 )  << str << setw( 2 ) << i.tm_mon + 1 << endl;
    }
for(tm i{0,0,0,1,0};i.tm_-mon<12;++i.tm_-mon)
{
std::stringstream-oss;

oss以下功能也将起作用

for(tm i{ 0, 0, 0, 1, 0 }; i.tm_mon < 12; ++i.tm_mon)
    {
        std::stringstream oss;
        oss << std::put_time(&i, "%B");
        string str = oss.str();
        cout << std::setiosflags(std::ios::left) << setw( 10 )  << str << setw( 2 ) << i.tm_mon + 1 << endl;
    }
for(tm i{0,0,0,1,0};i.tm_-mon<12;++i.tm_-mon)
{
std::stringstream-oss;
oss下面是一个关于I/O操纵器的示例:

#include "date.h"
#include <iomanip>
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std;
    auto m = jan;
    do
    {
        cout << left << setw(10) << format("%B", sys_days{m/1/1}) << right
             << unsigned(m) << '\n';
    } while (++m != jan);
}
下面是一个关于I/O操纵器的示例:

#include "date.h"
#include <iomanip>
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std;
    auto m = jan;
    do
    {
        cout << left << setw(10) << format("%B", sys_days{m/1/1}) << right
             << unsigned(m) << '\n';
    } while (++m != jan);
}