Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>::c_str

Depuis fr.cppreference.net
 
 
 
std::basic_string
 
const CharT* c_str() const;
(noexcept depuis C++11)
(constexpr depuis C++20)

Retourne un pointeur vers un tableau de caractères terminé par un caractère nul, avec des données équivalentes à celles stockées dans la chaîne.

Le pointeur est tel que la plage [c_str()c_str() + size()] est valide et que les valeurs qu'elle contient correspondent aux valeurs stockées dans la chaîne, avec un caractère nul supplémentaire après la dernière position.

Le pointeur obtenu depuis c_str() peut être invalidé par :

  • Le passage d'une référence non-const à la chaîne à une fonction quelconque de la bibliothèque standard, ou
  • L'appel de fonctions membres non-const sur la chaîne, à l'exception de operator[], at(), front(), back(), begin(), rbegin(), end() et rend()(depuis C++11).

Écrire dans le tableau de caractères accédé via c_str() est un comportement indéfini.

c_str() et data() effectuent la même fonction.

(depuis C++11)

Paramètres

(aucun)

Valeur de retour

Pointeur vers le stockage de caractères sous-jacent.

c_str ( ) [ i ] == operator [ ] ( i ) pour chaque i dans [ 0 , size ( ) ) .

(jusqu'à C++11)

c_str ( ) + i == std:: addressof ( operator [ ] ( i ) ) pour chaque i dans [ 0 , size ( ) ] .

(depuis C++11)

Complexité

Constante.

Notes

Le pointeur obtenu à partir de c_str() ne peut être traité comme un pointeur vers une chaîne de caractères terminée par un caractère nul que si l'objet string ne contient pas d'autres caractères nuls.

Exemple

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
extern "C" void c_func(const char* c_str)
{
    printf("c_func called with '%s'\n", c_str);
}
int main()
{
    std::string const s("Emplary");
    const char* p = s.c_str();
    assert(s.size() == std::strlen(p));
    assert(std::equal(s.begin(), s.end(), p));
    assert(std::equal(p, p + s.size(), s.begin()));
    assert('\0' == *(p + s.size()));
    c_func(s.c_str());
}

Sortie :

c_func called with 'Emplary'

Voir aussi

( DR* )
accède au premier caractère
(fonction membre publique)
( DR* )
accède au dernier caractère
(fonction membre publique)
retourne un pointeur vers le premier caractère d'une chaîne
(fonction membre publique)