Показывать дату и настоящий час в C ++

Я использую Визуальный Studio 2015 и хочу способствовать тому, чтобы он показал меня ему из-за экрана "даты" и "настоящего часа" в C ++, для этого я звоню в функции: getLocalTime и getTimeFormat.

У меня есть этот код внутри main:

printf(GetLocalTime);
printf(GetTimeFormat);

И выполнив это, он показывает мне следующее из-за экрана:

ÿ00B3104BlötÌÌÌÌÌÌÌÌÌÌ<ÿU<ìQ¡¼Pöt3Å%EüV<5üWöt.ö._U

Что я могу делать, чтобы мочь показывать это из-за экрана?

1
задан 05.11.2016, 19:03
3 ответа

Как ты это делаешь, не звался в функцию GetLocalTime (или GetTimeFormat), ты посылаешь в printf адрес памяти функции (ты перемещаешь его имя функции прямо), когда printf надейся, что Ваш первый параметр - цепь характеров. Следовательно, в твоем коде, printf отнесись к адресу памяти функции, как будто это была цепь характеров, отсюда следует, что он напечатал тебе редкие вещи. Ты был бы должен делать что-то как (согласно небольшому количеству, что я просмотрел документацию Windows; восходите расскажи, что эти функции не являются стандартными C, и также я не понимаю porqué они требуют у тебя сделать это таким образом):

// lo suficientemente grande para obtener el formato. La doc de 
// windows, como no, no especifica como de grande debe ser.
char formato[30]; 
int status = getTimeFormat(LOCALE_CUSTOM_DEFAULT,
      TIME_FORCE24HOURFORMAT, NULL, NULL, formato, 30);

if (status == 0)
   printf("Error. Aun estoy aprendiendo.");
else
   printf("%s", formato);

printf("\n");
1
ответ дан 24.11.2019, 12:44

В C ++ 11 ты можешь использовать std::put_time из заголовка iomanip:

#include <iostream>
#include <iomanip>
#include <ctime>

int main()
{
    auto t = std::time(nullptr);
    auto tm = *std::localtime(&t);
    std::cout << std::put_time(&tm, "%d-%m-%Y %H-%M-%S") << std::endl;
}

std::put_time - stream manipulator , asГ - что tambiГ©n может использоваться вместе с std::ostringstream для того, чтобы конвертировать дату в цепь символов:

#include <iostream>
#include <iomanip>
#include <ctime>
#include <sstream>

int main()
{
    auto t = std::time(nullptr);
    auto tm = *std::localtime(&t);

    std::ostringstream oss;
    oss << std::put_time(&tm, "%d-%m-%Y %H-%M-%S");
    auto str = oss.str();

    std::cout << str << std::endl;
}

, Взятая из Current восходила and украдите туз string answer в StackOverflow

4
ответ дан 24.11.2019, 12:44
  • 1
    Хорошие, он должен быть с funci и # 243; n: GetTimeFormat, эксперт и # 237; он не стоит мне. – Daniel Ruiz 05.11.2016, 19:14
  • 2
    В programaci и # 243; n совсем не должно быть с X или Y. Если est и # 225; s делая упражнение для школы, est и # 225; хорошо, но твой вопрос был должен показывать этот тип ограничений. Мой ответ - v и # 225; lida для первоначального вопроса. – jachguate 05.11.2016, 19:15
  • 3
    Верно была ошибка м и # 237; или не показывать, что он должен быть с funci и # 243; n: GetTimeFormat , дело в том, что не очень хорошо, который нужно перемещать его и может быть поэтому, что я ошибки. – Daniel Ruiz 05.11.2016, 19:31
  • 4
    @jachguate: или ты изменил мою жизнь, не conoc и # 237; в put_time. – Peregring-lk 06.11.2016, 04:17
  • 5
    @DanielRuiz, если ты нуждаешься в том, чтобы использовать GetTimeFormat этикетка C ++, 11 не имеет смысл. – PaperBirdMaster 07.11.2016, 09:50

Я рекомендую тебе использовать ее librerГ - в time.h:

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

int main(){
    char fecha[25];//ctime devuelve 26 caracteres pero tambien se podría usar un puntero de char
    time_t current_time;
    current_time=time(NULL);
    ctime(&current_time);
    strcpy(fecha, ctime(&current_time));
    printf("%s", fecha);
    return 0;
}
0
ответ дан 24.11.2019, 12:44
  • 1
    Дело в том, что схвати, и # 237; он не стоит мне, потому что я должен использовать функции: getLocalTime и getTimeFormat . С funci и # 243; n getLocalTime уже я этого достиг, но с getTimeFormat бьет козырем меня и дает ошибку. – Daniel Ruiz 05.11.2016, 19:08