Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: str

From cppreference.net
(1)
std:: basic_string < CharT, Traits, Allocator > str ( ) const ;
(jusqu'à C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) const & ;
(depuis C++20)
template < class SAlloc >
std:: basic_string < CharT, Traits, SAlloc > str ( const SAlloc & a ) const ;
(2) (depuis C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) && ;
(3) (depuis C++20)
void str ( const std:: basic_string < CharT, Traits, Allocator > & s ) ;
(4)
template < class SAlloc >
void str ( const std:: basic_string < CharT, Traits, SAlloc > & s ) ;
(5) (depuis C++20)
void str ( std:: basic_string < CharT, Traits, Allocator > && s ) ;
(6) (depuis C++20)
template < class StringViewLike >
void str ( const StringViewLike & t ) ;
(7) (depuis C++26)

Obtient et définit la chaîne sous-jacente.

Dans les descriptions ci-dessous, buf et mode sont des membres de données exposition-only de * this .

1) Crée et retourne un objet std::basic_string contenant une copie de la séquence de caractères sous-jacente de ce std::basic_stringbuf . Pour les flux en entrée uniquement, la chaîne retournée contient les caractères de la plage [ eback() , egptr() ) . Pour les flux en entrée/sortie ou en sortie uniquement, contient les caractères de pbase() jusqu'au dernier caractère de la séquence, indépendamment de egptr() et epptr() .
La séquence de caractères membres dans un tampon ouvert en écriture peut être sur-allouée à des fins d'efficacité. Dans ce cas, seuls les caractères initialisés sont retournés : ces caractères sont ceux qui ont été obtenus à partir de l'argument chaîne du constructeur, de l'argument chaîne de l'appel le plus récent à une surcharge de mutateur de str() , ou d'une opération d'écriture. Une implémentation typique qui utilise la sur-allocation maintient un pointeur de niveau haut pour suivre la fin de la partie initialisée du tampon et cette surcharge retourne les caractères de pbase() jusqu'au pointeur de niveau haut.
Équivalent à return std:: basic_string < CharT, Traits, Allocator > ( view ( ) , get_allocator ( ) ) ; .
(depuis C++20)
2) Identique à (1) , sauf que a est utilisé pour construire le std::basic_string retourné. Équivalent à return std:: basic_string < CharT, Traits, SAlloc > ( view ( ) , a ) ; .
Cette surcharge participe à la résolution de surcharge seulement si SAlloc satisfait aux exigences de Allocator .
3) Crée un objet std::basic_string comme s'il était construit par déplacement à partir de la séquence de caractères sous-jacente de * this dans buf . buf peut nécessiter d'être ajusté pour contenir le même contenu que dans (1) initialement. Ensuite, vide buf et appelle init_buf_ptrs () , puis retourne l'objet std::basic_string .
4) Remplace la séquence de caractères sous-jacente comme si par buf = s , puis appelle init_buf_ptrs () .
5) Identique à (4) , sauf que le type de l'allocateur de s n'est pas Allocator .
Cette surcharge participe à la résolution de surcharge seulement si std:: is_same_v < SAlloc, Allocator > est false .
6) Remplace la séquence de caractères sous-jacente comme si par buf = std :: move ( s ) , puis appelle init_buf_ptrs () .
7) Convertit implicitement t en une vue de chaîne sv comme si par std:: basic_string_view < CharT, Traits > sv = t ; , puis remplace la séquence de caractères sous-jacente comme si par buf = sv , puis appelle init_buf_ptrs () .
Cette surcharge participe à la résolution de surcharge seulement si std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
est true .

Table des matières

Paramètres

s - un objet std::basic_string contenant la séquence de caractères de remplacement
t - un objet (convertible en std::basic_string_view ) contenant la séquence de caractères de remplacement
a - allocateur à utiliser pour toutes les allocations mémoire de la std::basic_string retournée

Valeur de retour

1-3) Un std::basic_string objet contenant la séquence de caractères sous-jacente de ce tampon.
4-7) (aucun)

Notes

Cette fonction est généralement accessible via std::basic_istringstream::str() , std::basic_ostringstream::str() , ou std::basic_stringstream::str() .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_sstream_from_string_view 202306L (C++26) Interface des flux de chaînes avec std::string_view

Exemple

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream in;  // pourrait aussi utiliser in("1 2")
    in.rdbuf()->str("1 2"); // définir la zone de lecture
    in >> n;
    std::cout << "après lecture du premier int depuis \"1 2\", l'int est " 
              << n << ", str() = \"" << in.rdbuf()->str() << "\"\n"; // ou in.str()
    std::ostringstream out("1 2");
    out << 3;
    std::cout << "après écriture de l'int '3' dans le flux de sortie \"1 2\""
              << ", str() = \"" << out.str() << "\"\n";
    std::ostringstream ate("1 2", std::ios_base::ate); // C++11
    ate << 3;
    std::cout << "après écriture de l'int '3' dans le flux d'ajout \"1 2\""
              << ", str() = \"" << ate.str() << "\"\n";
}

Sortie :

après lecture du premier int depuis "1 2", l'int est 1, str() = "1 2"
après écriture de l'int '3' dans le flux de sortie "1 2", str() = "3 2"
après écriture de l'int '3' dans le flux d'ajout "1 2", str() = "1 23"

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 432 C++98 1. la surcharge (1) ne spécifiait pas le contenu
de la séquence de caractères sous-jacente
2. la surcharge (4) ne spécifiait pas comment les
séquences d'entrée et de sortie sont initialisées
les deux sont spécifiés
LWG 562 C++98 la surcharge (4) positionnait epptr() sur le caractère suivant le dernier
caractère sous-jacent si bool ( mode & std:: ios_base :: out ) == true
epptr() peut être positionné
au-delà de cette position

Voir aussi

obtient ou définit le contenu de l'objet de chaîne sous-jacent
(fonction membre publique de std::basic_stringstream<CharT,Traits,Allocator> )
(C++20)
obtient une vue sur la séquence de caractères sous-jacente
(fonction membre publique)