std::time_get<CharT,InputIt>:: get_weekday, std::time_get<CharT,InputIt>:: do_get_weekday
|
Défini dans l'en-tête
<locale>
|
||
|
public
:
iter_type get_weekday
(
iter_type beg, iter_type end,
std::
ios_base
&
str,
|
(1) | |
|
protected
:
virtual
iter_type do_get_weekday
(
iter_type beg, iter_type end,
std::
ios_base
&
str,
|
(2) | |
do_get_weekday
de la classe la plus dérivée.
[
beg
,
end
)
et analyse le nom du jour de la semaine (éventuellement abrégé), en utilisant le format par défaut pour les jours de la semaine attendu par cette locale, qui est le même format que
"%a"
utilisé par les fonctions
std::get_time
,
time_get::get
, et la fonction POSIX
strptime()
.
S'il trouve un nom abrégé, suivi des caractères valides pour le nom complet, il continue la lecture jusqu'à ce qu'il consomme tous les caractères du nom complet ou trouve un caractère non attendu, auquel cas l'analyse échoue même si les premiers caractères formaient une abréviation valide.
Le jour de la semaine analysé est stocké dans le champ std::tm t - > tm_wday .
Si l'itérateur de fin est atteint avant qu'un nom de jour de la semaine valide soit lu, la fonction définit std::ios_base::eofbit dans err . Si une erreur d'analyse est rencontrée, la fonction définit std::ios_base::failbit dans err .
Table des matières |
Paramètres
| beg | - | itérateur désignant le début de la séquence à analyser |
| end | - | itérateur indiquant la fin de la séquence à analyser (un après le dernier élément) |
| str | - | un objet de flux utilisé par cette fonction pour obtenir les facettes de locale lorsque nécessaire, par exemple std::ctype pour ignorer les espaces blancs ou std::collate pour comparer des chaînes |
| err | - | objet des indicateurs d'erreur de flux modifié par cette fonction pour signaler les erreurs |
| t | - | pointeur vers l'objet std::tm qui contiendra le résultat de cet appel de fonction |
Valeur de retour
Itérateur pointant un caractère au-delà du dernier caractère dans
[
beg
,
end
)
qui a été reconnu comme faisant partie d'un nom de jour de la semaine valide.
Notes
Cette fonction est généralement insensible à la casse.
Si une erreur d'analyse est rencontrée, la plupart des implémentations de cette fonction laissent * t inchangé.
Exemple
#include <initializer_list> #include <iostream> #include <iterator> #include <locale> #include <sstream> #include <string_view> void try_get_wday(std::string_view s) { std::cout << "Analyse du jour de la semaine dans '" << s << "' avec la locale " << std::locale().name() << '\n'; std::istringstream str{s.data()}; std::ios_base::iostate err{std::ios_base::goodbit}; std::tm t; std::time_get<char> const& facet = std::use_facet<std::time_get<char>>(str.getloc()); std::istreambuf_iterator<char> ret = facet.get_weekday({str}, {}, str, err, &t); str.setstate(err); std::istreambuf_iterator<char> last{}; if (str) { std::cout << "Analyse réussie, numéro du jour de la semaine est " << t.tm_wday; if (ret != last) { std::cout << " Contenu restant : "; std::copy(ret, last, std::ostreambuf_iterator<char>(std::cout)); } else std::cout << " l'entrée a été entièrement consommée"; } else { std::cout << "Échec de l'analyse. Chaîne non analysée : "; std::copy(ret, last, std::ostreambuf_iterator<char>(std::cout)); } std::cout << '\n'; } void demo(std::string_view locale_name, std::initializer_list<std::string_view>&& data) { try { std::locale::global(std::locale(locale_name.data())); } catch (std::runtime_error const& ex) { std::cout << "Impossible de configurer la locale : " << locale_name << "\n" "Exception : " << ex.what() << '\n'; return; } for (std::string_view const weekday : data) try_get_wday(weekday); } int main() { demo("lt_LT.utf8", {"Št", "Šeštadienis"}); demo("en_US.utf8", {"SATELLITE"}); demo("ja_JP.utf8", {"土曜日"}); }
Sortie possible :
Analyse du jour de la semaine à partir de 'Št' dans la locale lt_LT.utf8 Analyse réussie, le numéro du jour de la semaine est 6, l'entrée a été entièrement consommée Analyse du jour de la semaine à partir de 'Šeštadienis' dans la locale lt_LT.utf8 Analyse réussie, le numéro du jour de la semaine est 6, l'entrée a été entièrement consommée Analyse du jour de la semaine à partir de 'SATELLITE' dans la locale en_US.utf8 Analyse réussie, le numéro du jour de la semaine est 6, contenu restant : ELLITE Analyse du jour de la semaine à partir de '土曜日' dans la locale ja_JP.utf8 Analyse réussie, le numéro du jour de la semaine est 6, l'entrée a été entièrement consommée
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 248 | C++98 |
eofbit
n'était pas défini lors de l'atteinte de l'itérateur de fin
|
définit
eofbit
si un nom de jour de la semaine valide n'a pas été lu
|
Voir aussi
|
(C++11)
|
analyse une valeur de date/heure selon un format spécifié
(modèle de fonction) |