std:: get_time
|
헤더 파일에 정의됨
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ get_time ( std:: tm * tmb, const CharT * fmt ) ; |
(C++11 이후) | |
표현식에서 in >> get_time ( tmb, fmt ) 가 사용될 때, 문자 입력을 형식 문자열 fmt 에 따라 현재 입력 스트림 in 에 임베드된 로케일의 std::time_get 패싯에 따라 날짜/시간 값으로 파싱합니다. 결과 값은 std::tm 객체에 저장되며, 이 객체는 tmb 가 가리키는 위치에 있습니다.
목차 |
매개변수
| tmb | - | 결과가 저장될 std::tm 객체에 대한 유효한 포인터 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
pointer to a null-terminated
CharT
string specifying the conversion format
형식 문자열은 0개 이상의 변환 지정자, 공백 문자, 그리고 일반 문자(
참고:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
반환값
지정되지 않은 타입의 객체로서
-
만약
in
이
std::
basic_istream
<
CharT, Traits
>
타입의 객체라면, 표현식
in
>>
get_time
(
tmb, fmt
)
- 는 std:: basic_istream < CharT, Traits > & 타입을 가짐
- 값은 in 을 가짐
- 마치 f ( in, tmb, fmt ) 을 호출한 것처럼 동작함
함수 f 가 다음과 같이 정의되는 경우:
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, std::tm* tmb, const CharT* fmt) { using Iter = std::istreambuf_iterator<CharT, Traits>; using TimeGet = time_get<CharT, Iter>; std::ios_base::iostate err = std::ios_base::goodbit; const TimeGet& tg = std::use_facet<TimeGet>(str.getloc()); tg.get(Iter(str.rdbuf()), Iter(), str, err, tmb, fmt, fmt + Traits::length(fmt)); if (err != std::ios_base::goodbit) str.setstate(err); }
참고 사항
std::time_get::do_get
에 명시된 바와 같이, 이 함수가 호출하는 do_get 함수는
*
tmb
에서
fmt
에 나타나는 변환 지정자로 직접 설정되지 않은 필드들을 0으로 초기화하는지 여부가 명시되어 있지 않습니다: 이식성이 있는 프로그램들은
std::get_time
을 호출하기 전에
*
tmb
의 모든 필드를 0으로 초기화해야 합니다.
예제
참고: 출력을 확인하려면 clang 또는 gcc >= 12.1을 선택하십시오. 12.1 이전의 libstdc++은 % b 지정자를 올바르게 구현하지 않습니다: 버그 #78714 .
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { std::tm t = {}; std::istringstream ss("2011-Februar-18 23:12:34"); ss.imbue(std::locale("de_DE.utf-8")); ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); if (ss.fail()) std::cout << "Parse failed\n"; else std::cout << std::put_time(&t, "%c") << '\n'; }
가능한 출력:
Sun Feb 18 23:12:34 2011
참고 항목
|
입력 문자 시퀀스로부터 시간/날짜 값을
std::tm
으로 파싱합니다
(클래스 템플릿) |
|
|
(C++11)
|
지정된 형식에 따라 날짜/시간 값을 형식화하고 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림으로부터
chrono
객체를 파싱합니다
(함수 템플릿) |