我的程序想用C ++打印epoc时间
如果我使用fprintf / printf命令打印,我会得到正确的输出
fprintf(stdout, "epoch time=%u\t", (unsigned)time(NULL));
printf("var epoch=%u\n",(unsigned)time(NULL));
输出---> 1528573149
但是当我使用C ++打印epoc时间时,输出以“hex”格式打印
cout<<"epoch time ="<< (unsigned)time(0);
输出----&GT; 5b1c2cdd
无法计算,十进制值如何隐式转换为十六进制值。
答案 0 :(得分:1)
对我来说显示为十进制,但请尝试以下操作:
std::cout << std::dec << (unsigned)time(0);
或者您可以设置所需的格式标志:
std::cout.setf(std::ios_base::dec, std::ios_base::basefield);
答案 1 :(得分:1)
这是唯一的方式:
cout<<"epoch time ="<< (unsigned)time(0);
如果您之前已将std::cout
设置为十六进制模式,可以十六进制打印。
例如:
#include <ctime>
#include <iostream>
#include <iomanip>
int main() {
std::cout << " decimal epoch time = " << time(0) << "\n";
std::cout << std::hex;
std::cout << "hexadecimal epoch time = " << time(0) << "\n";
}
我系统的输出是:
decimal epoch time = 1528663129
hexadecimal epoch time = 5b1d8c59
在我看来,这是C ++ I / O最烦人的功能:要使用非默认格式打印单个项目,您必须更改输出流的状态,这会影响该流的所有后续输出。
如果您想以十六进制格式打印单个数据项(您可能在程序的早期版本中已经完成),您可以执行以下操作:
std::cout << "x = " << std::hex << x << std::dec << "\n";
这会将输出格式设置为十进制 - 无论之前是什么。可能有一种复杂的方法可以将它恢复到原来的状态。