Получение epoc time в c ++ (шестнадцатеричное значение печатается неявно) - PullRequest
0 голосов
/ 10 июня 2018

Моя программа хочет напечатать epoc time в C ++

Если я печатаю с помощью команды fprintf / printf, я получаю правильный вывод

fprintf(stdout, "epoch time=%u\t", (unsigned)time(NULL));
printf("var epoch=%u\n",(unsigned)time(NULL));

Output---> 1528573149

Но когда я печатаю время epoc с использованием C ++, вывод его выводится в формате "hex"

cout<<"epoch time ="<< (unsigned)time(0);

Выходные данные ----> 5b1c2cdd

Невозможно определить, как десятичное значение неявно преобразуется в шестнадцатеричное значение.

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Единственный способ, которым это:

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 ++: чтобы напечатать отдельный элемент в формате, отличном от заданного по умолчанию, вы должны изменитьсостояние выходного потока, которое влияет на все последующие выходные данные в этом потоке.

Если вы хотите напечатать один элемент данных в шестнадцатеричном формате (что вы, вероятно, сделали ранее в своей программе), вы можете сделать что-тонапример:

std::cout << "x = " << std::hex << x << std::dec << "\n";

Устанавливает выходной формат обратно в десятичный формат независимо от того, каким он был ранее.Вероятно, есть сложный способ восстановить его, каким бы он ни был.

0 голосов
/ 10 июня 2018

Показывается как десятичное число для меня, но попробуйте это:

std::cout << std::dec << (unsigned)time(0);

Или вы можете установить желаемый флаг формата:

std::cout.setf(std::ios_base::dec, std::ios_base::basefield);
...