cout 格式化输出

时间:2023-03-08 20:44:53

一直习惯于C语言的printf函数来打印,突然有一天要用cout来打印,发现有点不适应。

原来cout也是有格式化输出的。

首先要引入头文件

#include<iostream> // 在使用setf等库函数时使用
#include<iomanip> // 在使用流操纵算子时使用

cout可以用setw来设置字符串的长度,不足的话,可以用setfill来设置填充

   string str = "";

    time_t ti = atoi(str.c_str());

    struct tm*  p = gmtime(&ti);

    // printf的写法
printf("%04d/%02d/%02d %02d:%02d:%02d\n",
+ p->tm_year,
+ p->tm_mon,
p->tm_mday,
+ p->tm_hour,
p->tm_min,
p->tm_sec); // cout的写法
std::cout <<std::setfill('') ;
std::cout << std::setw() << + p->tm_year << "/"
<< std::setw() << + p->tm_mon << "/"
<< std::setw() << p->tm_mday << " "
<< std::setw() << + p->tm_hour << ":"
<< std::setw() << p->tm_min << ":"
<< std::setw() << p->tm_sec << std::endl;

输出结果: 2014/05/30 15:45:19

以指定的进制输出

    int ival = ;
std::cout <<"oct : " <<oct <<ival << std::endl ; // 21 : 8 进制
std::cout <<"dec : " <<dec <<ival << std::endl ; // 17 : 10 进制
std::cout <<"hex : " <<hex <<ival << std::endl ; // 11 : 16 进制
std::cout <<"hex : " <<hex <<17.01 << std::endl ; // 17.01 : 不受影响