Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: unshift, do_unshift

From cppreference.net
Défini dans l'en-tête <locale>
public :

result unshift ( StateT & state, ExternT * to, ExternT * to_end,

ExternT * & to_next ) const ;
(1)
protected :

virtual result do_unshift ( StateT & state, ExternT * to, ExternT * to_end,

ExternT * & to_next ) const ;
(2)
1) Fonction membre publique, appelle la fonction membre do_unshift de la classe la plus dérivée.
2) Si l'encodage représenté par cette facette codecvt dépend de l'état, et que state représente un état de conversion qui n'est pas l'état de décalage initial, écrit les caractères nécessaires pour revenir à l'état de décalage initial. Les caractères sont écrits dans un tableau de caractères dont le premier élément est pointé par to . Pas plus de to_end - to caractères sont écrits. Le paramètre to_next est mis à jour pour pointer juste après le dernier caractère écrit.

Table des matières

Valeur de retour

Une valeur de type std::codecvt_base::result , indiquant le statut de réussite comme suit :

ok tous les caractères nécessaires ont été écrits. state représente maintenant l'état de décalage initial
partial espace insuffisant dans le tampon de sortie. to_next == to_end
error une erreur non spécifiée s'est produite
noconv l'encodage n'est pas dépendant de l'état, aucune séquence de terminaison nécessaire

Notes

Cette fonction est appelée par std::basic_filebuf::close() et dans d'autres situations lors de la finalisation d'une séquence de caractères multioctets dépendante de l'état.

Exemple

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 305 C++98 std:: codecvt < wchar_t , char , std:: mbstate_t > :: do_unshift
devait ne pas écrire de caractère
non requis
LWG 380 C++98 la signification du retour partial était 'plus de caractères doivent
être fournis pour compléter la terminaison', mais aucun caractère n'est fourni
corrigé pour indiquer un
espace tampon insuffisant
LWG 381 C++98 state n'était pas requis d'être valide, et
error est retourné si state est invalide
state doit être valide, et
retourner error indique une erreur
LWG 664 C++98 std:: codecvt < char , char , std:: mbstate_t > :: do_unshift
devait ne pas écrire de caractère
non requis
LWG 665 C++98 std:: codecvt < char , char , std:: mbstate_t > :: do_unshift
devait retourner noconv
non requis

Voir aussi

convertit un caractère large en sa représentation multioctet, en tenant compte de l'état
(fonction)
[virtual]
convertit une chaîne de InternT vers ExternT , par exemple lors de l'écriture dans un fichier
(fonction membre protégée virtuelle)