The C++ Programming Language Third Edition phần 10 ppt

103 1.1K 1
The C++ Programming Language Third Edition phần 10 ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Section D.4.4.3 Date and Time Output 909 actual output and may contain the following special-purpose format specifiers: %a %a %A %A %b %b %B %B %c %c %d %d %H %H %I %I %j %j %m %m %M %M %p %p %S %S %U %U %w %w %W %W %x %x %X %X %y %y %Y %Y %Z %Z abbreviated weekday name (e.g., Sat) full weekday name (e.g., Saturday) abbreviated month name (e.g., Feb) full month name (e.g., February) date and time (e.g., Sat Feb 06 21:46:05 1999) day of month [01,31] (e.g., 06) 24-hour clock hour [00,23] (e.g., 21) 12-hour clock hour [01,12] (e.g., 09) day of year [001,366] (e.g., 037) month of year [01,12] (e.g., 02) minute of hour [00,59] (e.g., 48) a.m./p.m indicator for 12-hour clock (e.g., PM) second of minute [00,61] (e.g., 40) week of year [00,53] starting with Sunday (e.g., 05); the first Sunday starts week day of week [0,6]; means Sunday (e.g., 6) week of year [00,53] starting with Monday (e.g., 05); the first Monday starts week date (e.g., 02/06/99) time (e.g., 21:48:40) year without century [00,99] (e.g., 99) year (e.g., 1999) time zone indicator (e.g., EST) if the time zone is known This long list of very specialized formatting rules could be used as an argument for the use of extensible I/O systems However, as with most specialized notations, it is adequate for its task and often even convenient In addition to these formatting directives, most implementations support ‘‘modifiers,’’ such as an integer specifying a field width (§21.8), %1 0X Modifiers for the time-and-date formats are not 10 X part of the C++ standard, but some platform standards, such as POSIX, require them Consequently, modifiers can be difficult to avoid even if their use isn’t perfectly portable The s pr in tf sp ri nt f-like (§21.8) function s tr ft im e() from the time and date format directives: s iz e_ t s tr ft im e(c r* s s iz e_ t m ax c on st c r* f or ma t, c on st t m* t mp ; si ze _t st rf ti me ch ar s, si ze _t ma x, co ns t ch ar fo rm at co ns t tm tm p) This function places a maximum of m ax characters from *t mp and the f or ma t into *s according the ma x tm p fo rm at s f or ma t For example: fo rm at i nt m n() in t ma in { c on st i nt m ax = 0; // sloppy: hope strftime() will never produce more than 20 characters co ns t in t ma x 20 c r b uf ma x]; ch ar bu f[m ax t im e_ t t = t im e(0 ; ti me _t ti me 0) s tr ft im e(b uf ma x,"%A \n lo ca lt im e(&t ; st rf ti me bu f,m ax A\ n",l oc al ti me t)) c ou t (i st re am s D at e& d is tr ea m& op er at or is tr ea m& s, Da te d) { i st re am :s en tr y g ua rd s); is tr ea m: se nt ry gu ar d(s // see §21.3.8 i f (!g ua rd r et ur n s if gu ar d) re tu rn s; i os _b as e::i os ta te r es = io s_ ba se io st at e re s 0; t m x = { }; tm i st re am bu f_ it er at or ch ar ch ar _t it s > e nd is tr ea mb uf _i te to r(s ge tl oc us e_ fa ce t< ti me _g et ch ar s.g et lo c()).g et _d at e(s en d,s re s,&x ; ge t_ da te s,e nd s,r es x) i f (r es || r es io s_ ba se :e of bi t) if re s==0 re s==i os _b as e: eo fb it d = D at e(x tm _m da y,D at e::M on th x.t m_ mo n+1 ,x tm _y ea r+1 90 0); Da te x.t m_ md ay Da te Mo nt h(x tm _m on 1) x.t m_ ye ar 19 00 e ls e el se s se ts ta te re s); s.s et st at e(r es } c at ch ( ) { ca tc h h an dl e_ io ex ce pt io n(s ; nd le _i oe xc ep ti on s) // see §D.4.2.2 } r et ur n s re tu rn s; } The call g et _d at e(s en d,s re s,&x relies on two implicit conversions from i st re am As the first ge t_ da te s,e nd s,r es x) is tr ea m: argument, s is used to construct an i st re am bu f_ it er at or As third argument, s is converted to the is tr ea mb uf _i te to r i st re am base class i os _b as e is tr ea m io s_ ba se This input operator will work correctly for dates in the range that can be represented by t im e_ t ti me _t A trivial test case would be: i nt m n() in t ma in t ry { tr y D at e t od ay Da te to da y; c ou t

Ngày đăng: 12/08/2014, 19:21

Từ khóa liên quan

Mục lục

  • The C++ Programming Language (Special 3rd Edition)

    • Appendices and Index

      • AppD Locales

        • D.4 Standard Facets

          • D.4.4 Date and Time Input and Output

            • D.4.4.4 Date and Time Input

            • D.4.4.5 A More Flexible Date Class

            • D.4.4.6 Specifying a Date Format

            • D.4.4.7 A Date Input Facet

            • D.4.5 Character Classification

              • D.4.5.1 Convenience Interfaces

              • D.4.6 Character Code Conversion

              • D.4.7 Messages

                • D.4.7.1 Using Messages from Other Facets

                • D.5 Advice

                • AppE Standard-Library Exception Safety

                  • E.1 Introduction

                  • E.2 Exception Safety

                  • E.3 Exception-Safe Implementation Techniques

                    • E.3.1 A Simple Vector

                    • E.3.2 Representing Memory Explicitly

                    • E.3.3 Assignment

                    • E.3.4 push_ back()

                    • E.3.5 Constructors and Invariants

                      • E.3.5.1 Using init() Functions

                      • E.3.5.2 Relying on a Default Valid State

                      • E.3.5.3 Delaying resource acquisition

                      • E.4 Standard Container Guarantees

                        • E.4.1 Insertion and Removal of Elements

                        • E.4.2 Guarantees and Tradeoffs

                        • E.4.3 Swap

Tài liệu cùng người dùng

Tài liệu liên quan