Как получить время windows в vc ++? - PullRequest
2 голосов
/ 23 февраля 2011

Я пытаюсь выяснить, как получить дату (день недели; день месяца с 1-м, 2-м и т. Д .; месяц; и год). В Microsoft Visual C ++ 2010 Express подчеркнутый раздел следующего кода получает ошибку: int tm :: tm wday Ошибка: ссылка на нестатический член должна относиться к конкретному объекту

#include <iostream>
#include <time.h>
using namespace std;
int main () 
{
int a;
a = tm.tm_wday;
}

"a = tm :: tm_wday;"
получает ту же ошибку.

Пожалуйста, помогите мне удалить эту ошибку.

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

тм это структура. Вам нужно создать объект для доступа к его члену.

См. http://www.cplusplus.com/reference/clibrary/ctime/localtime/ для примера

2 голосов
/ 23 февраля 2011

Обычно вы делаете что-то вроде этого:

#include <time.h>
#include <iostream>

int main() { 
    static const char *names[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

    time_t current = time(NULL);
    struct tm *now = localtime(&current);

    std::cout << names[now->tm_wday];
    return 0;
}

В нынешнем виде это просто печатает аббревиатуру для текущего дня недели, но (конечно), как только вы инициализировали struct tm с правильными данными, вы можете использовать все поля из них, которые вы хотите.

Обратите внимание, однако, что localtime возвращает адрес статически распределенного буфера.Вызов любой другой функции времени может перезаписать этот буфер, поэтому, если вам нужны данные за любой промежуток времени, вы обычно хотите определить struct tm для его сохранения и скопировать данные из буфера, используемого localtime, в свой собственный буфер..

Также обратите внимание, что вместо определения собственного массива имен дней недели вы обычно хотите использовать strftime для форматирования вывода.Он не только уже встроен (и названия месяцев и т. Д.), Но также может (по крайней мере, если память служит) локализовать имена на основе локали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...