В C++ существует ли стандартный класс даты/времени?

Как заявили другие, вам нужно добавить (существующие) проекты в решение. Затем вам нужно добавить ссылку на них в Solution -> Projects . Теперь они должны отображаться со своими пространствами имен в Object Browser .

Есть еще одна вещь, в которой ты должен убедиться, что мне потребовались некоторые эксперименты, чтобы выяснить это. Всякий раз, когда я добавлял свой второй проект, первый перестал работать, и сообщение об ошибке было таким же, как когда проект пропускает ссылку ( «Не удалось найти тип или имя пространства имен« Ber »(вы пропускаете использование директива или ссылка на сборку?) "). Проблема заключалась в том, что оба проекта имели одинаковое имя сборки по умолчанию («Библиотека классов») в проекте Свойства -> Приложение . Так дайте им уникальные имена. Я использую так же, как пространство имен по умолчанию .

28
задан LihO 21 September 2013 в 19:27
поделиться

4 ответа

Не является частью STL, но хорошо известная библиотека является boost.

Я бы пошел путем использования boost :: date . Вот несколько примеров: http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/date_time_io.html#date_time.io_tutorial .

Если вы не пробовали boost, тем не менее, я рекомендую вам это сделать, поскольку это избавляет вас от множества неприятных проблем, поскольку маскирует большинство зависимых от ОС вещей, таких как, например, многопоточность. Многие вещи в boost относятся только к заголовкам (библиотеки шаблонов). Однако datetime требует наличия библиотеки или библиотеки DLL.

22
ответ дан 28 November 2019 в 03:11
поделиться

Существует также метод ctime (& time_t), который выводит строку (char *).

4
ответ дан 28 November 2019 в 03:11
поделиться

ОК. Вот самое близкое, что я нашел, о прямой записи времени в поток:

time_t t(time(NULL));   // current time
tm tm(*localtime(&t));  

std::locale loc("");    // current user locale
ostringstream sout;
const std::time_put<TCHAR> &tput =
    std::use_facet<std::time_put<TCHAR> >(loc);
tput.put(sout.rdbuf(), sout, _T('\0'), &tm, _T('x'));
sout << ends;

CString sTest(sout.str().c_str());

Очень полезным руководством является Справочное руководство по стандартной библиотеке Apache C ++. http://stdcxx.apache.org/doc/stdlibref/time-put.html#sec13

4
ответ дан 28 November 2019 в 03:11
поделиться

Nitpicking: STL, являющаяся стандартной библиотекой шаблона , имеет дело с универсальным контейнером, алгоритмами и т. Д. И вряд ли будет включать классы для обработки даты и вычисления даже в будущем…

Сама стандартная библиотека C ++ включает STL и предыдущую версию стандартной библиотеки C. Последний предлагает некоторые функции, связанные с датой и временем, через #include , о чем уже упоминалось выше.

Если оборачивать (или просто использовать) эти функции достаточно (и быстрее), чем извлекать boost , используйте эти. С ними все в порядке.

13
ответ дан 28 November 2019 в 03:11
поделиться
Другие вопросы по тегам:

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