std:: get_time
|
Definido en el encabezado
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ get_time ( std:: tm * tmb, const CharT * fmt ) ; |
(desde C++11) | |
Cuando se utiliza en una expresión in >> get_time ( tmb, fmt ) , analiza la entrada de caracteres como un valor de fecha/hora según la cadena de formato fmt de acuerdo con la faceta std::time_get de la configuración regional actualmente imbricada en el flujo de entrada in . El valor resultante se almacena en un objeto std::tm apuntado por tmb .
Contenidos |
Parámetros
| tmb | - | puntero válido al std::tm objeto donde se almacenará el resultado | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
pointer to a null-terminated
CharT
string specifying the conversion format
La cadena de formato consiste en cero o más especificadores de conversión, caracteres de espacio en blanco y caracteres ordinarios (excepto
Nota:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Valor de retorno
Un objeto de tipo no especificado tal que
-
si
in
es un objeto de tipo
std::
basic_istream
<
CharT, Traits
>
, la expresión
in
>>
get_time
(
tmb, fmt
)
- tiene tipo std:: basic_istream < CharT, Traits > &
- tiene valor in
- se comporta como si llamara a f ( in, tmb, fmt )
donde la función f se define como:
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); }
Notas
Como se especifica en
std::time_get::do_get
, que esta función llama, no está especificado si esta función pone a cero los campos en
*
tmb
que no se establecen directamente por los especificadores de conversión que aparecen en
fmt
: los programas portables deben inicializar cada campo de
*
tmb
a cero antes de llamar a
std::get_time
.
Ejemplo
Nota: elija clang o gcc >= 12.1 para observar la salida. libstdc++ anterior a 12.1 no implementa correctamente el % b especificador: bug #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'; }
Salida posible:
Sun Feb 18 23:12:34 2011
Véase también
|
analiza valores de fecha/hora desde una secuencia de caracteres de entrada hacia
std::tm
(plantilla de clase) |
|
|
(C++11)
|
formatea y genera un valor de fecha/hora de acuerdo al formato especificado
(plantilla de función) |
|
(C++20)
|
analiza un objeto
chrono
desde un flujo
(plantilla de función) |