2014-02-14 5 views
12

Почему C++ стандартная функция поддержки strftime(), но не strptime()? strftime() можно изменить время на строку, но нет функции, которая может изменить строку обратно.Почему стандартная функция поддержки C++ strftime, но не strptime?

On Posix strptime() доступен как функция C-like, используя его, чтобы заботиться о потенциальной проблеме смешанного кода на C и C++.

+0

Я почти + сделал это, потому что это похоже на справедливый вопрос (эта функциональность не существует на C, и она кажется странной), но затем я передумал, потому что я не думаю, что на самом деле этот вопрос отвечает. –

+0

Хороший вопрос. Я думаю, что в целом есть только несколько и громоздкие функции для сериализации времени и даты на C++. Если ожидается больше от C++ 11 chrono – TNA

+0

Мне просто интересно, почему они не спарены в стандарте C++. Сознательно? Или просто промах? – songyuanyao

ответ

1

Я не являюсь частью комитета по стандартам, но здесь идет:

strptime определяется ISO/IEC 9945 документов (по существу Unix Specification Single/POSIX). Он не является частью документов стандартов стандарта 9899: 1990 или 9899: 1999 (и я не думаю, что это часть 9899: 2011, хотя я не могу быть уверен, поскольку у меня нет того,).

Поскольку стандарты C++ имеют только уровни совместимости с их кузином C, вы не найдете strptime, предусмотренные документами стандартов C++ 14882: 1998 или 14882: 2011.

+1

Похоже, что 'strptime()' не поддерживается стандартами C, а стандарты C++ просто наследуют его. Но я все еще озадачен тем, что C-стойки не поддерживают 'strptime()' ... И затем я обнаружил, что функция 'std :: time_get :: get()' добавлена ​​в C++ 11 и делает подобная вещь, как 'strptime()', и может использоваться с 'std :: time_put :: put()' в парах. Спасибо за ваш ответ. – songyuanyao

+0

Реальность заключается в том, что если strptime доступен в среде C, вы сможете использовать его с C++, вы просто не можете рассчитывать на это в переносном приложении (если только ваша единственная совместимость с портами не относится к совместимым с POSIX платформам). – CasaDeRobison

+0

Да, совместимость может быть проблемой. В любом случае я пробовал, и он хорошо работает на моем Linux. Но нужно обратить внимание на то, что глобальный язык C должен соответствовать глобальному языку C++, особенно если у него нет имени. – songyuanyao

Смежные вопросы