Печать time_t в элементе векторной структуры

Извините, я думаю, что это может быть глупый вопрос. При попытке использовать cвремя для печати time_t внутри члена векторной структуры компилятор выдает мне эту ошибку argument of type "time_t" is incompatible with parameter of type "const tm *"

struct Trade_Record
{
    std::time_t PASP;
};

std::vector<Trade_Record> Trade_Records;


for (std::vector<Trade_Record>::iterator begin = Trade_Records.begin(); begin != Trade_Records.end(); begin++)
{
    std::cout << ctime(begin->PASP) << endl;
}

Как я могу напечатать time_t внутри члена векторной структуры? Спасибо!!

Отвечает ли это на ваш вопрос? векторная структура итератора С++

YScharf 17.05.2022 09:33
const tm *? Это невозможно. Вы можете использовать asctime.
273K 17.05.2022 09:36

@273K что именно невозможно?

bumbread 17.05.2022 09:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это:

    std::cout << ctime(&begin->PASP) << std::endl;

Оно работает!! Большое спасибо!! Могу ли я еще спросить, почему & должен быть добавлен перед итератором? Из того, что я узнал из школы, векторный итератор «начало» — это указатель. Следовательно, какой эффект принесет добавление & перед «begin». Большое спасибо!!

Stephen C 17.05.2022 09:49

> Из того, что я узнал из школы, векторный итератор «начало» — это указатель. Да, это указатель, он указывает на первый элемент вектора, а не на адрес PASP, вы обращаетесь к первому элементу с помощью begin->PASP. Поскольку сигнатура функции ctimechar* ctime (const time_t * timer), ей требуется адрес вашего PASP, &a дает адрес a.

ramsay 17.05.2022 10:03
Ответ принят как подходящий

Цитирую cppreference.com по этому поводу:

This function returns a pointer to static data and is not thread-safe. In addition, it modifies the static std::tm object which may be shared with std::gmtime and std::localtime. POSIX marks this function obsolete and recommends std::strftime instead.
The behavior may be undefined for the values of std::time_t that result in the string longer than 25 characters (e.g. year 10000)

Вместо этого вы должны использовать strftime:

#include <iostream>
#include <ctime>

int main() {
    std::time_t t = std::time(nullptr);
    char mbstr[100];
    
    if (std::strftime(mbstr, sizeof(mbstr), "%A %c", std::localtime(&t))) {
        std::cout << mbstr << '\n';
    }
}

Выход:

Tuesday Tue May 17 07:51:34 2022

(Посмотреть онлайн)

Другие вопросы по теме

Похожие вопросы

Как определяется, какой блок памяти использовать в c/c++?
Я скомпилировал свой код cpp для создания dll-файла в Visual Studio, но не могу найти сгенерированный dll-файл. Есть ли какое-либо имя по умолчанию для dll в vs
Неправильные значения печати при повторении массива 2d char
Данные в аргументе int* функции не возвращаются вызывающей стороной
Ошибка: доступ члена к неполному типу''; примечание: предварительное объявление ''
Можно ли использовать `#ifdef` внутри макроса?
Ошибка: ожидался неполный идентификатор перед токеном «{» в Linux gcc
Используют ли предварительно скомпилированные заголовки предварительно скомпилированные заголовки, если они включены, или они предназначены только для файлов .cpp?
Введите каламбур в константном / статическом инициализаторе (построение константы с плавающей запятой из битов)
Могу ли я добавить другую функцию, определенную в моем коде, в вектор, такой как массивы, которые включают адрес функции?