Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::time_get<CharT,InputIt>::get_date,std::time_get<CharT,InputIt>::do_get_date

      From cppreference.com
      <cpp‎ |locale‎ |time get
       
       
       
      Localization library
       
       
      Defined in header<locale>
      public:

      iter_type get_date( iter_type beg, iter_type end,std::ios_base& str,

                         std::ios_base::iostate& err,std::tm* t)const;
      (1)
      protected:

      virtual iter_type do_get_date( iter_type beg, iter_type end,std::ios_base& str,

                                     std::ios_base::iostate& err,std::tm* t)const;
      (2)
      1) Public member function, calls the protected virtual member functiondo_get_date of the most derived class.
      2) Reads successive characters from the sequence[begend) and parses out the calendar date value using the default format expected by this locale, which is determined as
      date_order()Format
      no_order"%m/%d/%y"
      dmy"%d/%m/%y"
      mdy"%m/%d/%y"
      ymd"%y/%m/%d"
      ydm"%y/%d/%m"
      as used by the functionsstd::get_time(),get(), and the POSIX functionstrptime().
      The parsed date is stored in the corresponding fields of thestd::tm structure pointed to by the argumentt.
      If the end iterator is reached before a valid date is read, the function setsstd::ios_base::eofbit inerr. If a parsing error is encountered, the function setsstd::ios_base::failbit inerr.

      Contents

      [edit]Parameters

      beg - iterator designating the start of the sequence to parse
      end - one past the end iterator for the sequence to parse
      str - a stream object that this function uses to obtain locale facets when needed, e.g.std::ctype to skip whitespace orstd::collate to compare strings
      err - stream error flags object that is modified by this function to indicate errors
      t - pointer to thestd::tm object that will hold the result of this function call

      [edit]Return value

      Iterator pointing one past the last character in[begend) that was recognized as a part of a valid date.

      [edit]Notes

      For the alphabetic components of the default date format (if any), this function is usually case-insensitive.

      If a parsing error is encountered, most implementations of this function leave*t unmodified.

      The implementation may support other date formats besides the ones required by the standard.

      [edit]Example

      Run this code
      #include <ctime>#include <iostream>#include <iterator>#include <locale>#include <sstream> void try_get_date(conststd::string& s){std::cout<<"Parsing the date out of '"<< s<<"' in the locale "<<std::locale().name()<<'\n';std::istringstream str(s);std::ios_base::iostate err=std::ios_base::goodbit; std::tm t;conststd::time_get<char>& facet=std::use_facet<std::time_get<char>>(str.getloc());std::istreambuf_iterator<char> ret= facet.get_date({str},{}, str, err,&t);    str.setstate(err); if(str){std::cout<<"Day: "<< t.tm_mday<<' '<<"Month: "<< t.tm_mon+1<<' '<<"Year: "<< t.tm_year+1900<<'\n';}else{std::cout<<"Parse failed. Unparsed string: ";std::copy(ret,{},std::ostreambuf_iterator<char>(std::cout));std::cout<<'\n';}}int main(){std::locale::global(std::locale("en_US.utf8"));    try_get_date("02/01/2013");    try_get_date("02-01-2013"); std::locale::global(std::locale("ja_JP.utf8"));    try_get_date("2013年02月01日");}

      Output:

      Parsing the date out of '02/01/2013' in the locale en_US.utf8Day: 1 Month: 2 Year: 2013Parsing the date out of '02-01-2013' in the locale en_US.utf8Parse failed. Unparsed string: -01-2013Parsing the date out of '2013年02月01日' in the locale ja_JP.utf8Day: 1 Month: 2 Year: 2013

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 248C++98eofbit was not set upon reaching the end iteratorsetseofbit if a valid date has not been read
      LWG 461C++98do_get_date needed to parse localized date representationparses with the format determined bydate_order()

      [edit]See also

      (C++11)
      parses a date/time value of specified format
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/locale/time_get/get_date&oldid=160213"

      [8]ページ先頭

      ©2009-2025 Movatter.jp