Namespaces
Variants

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

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

Retourne un pointeur vers le tableau sous-jacent servant de stockage de caractères. Le pointeur est tel que la plage

[data()data() + size())

(jusqu'à C++11)

[data()data() + size()]

(depuis C++11)

est valide et que les valeurs qu'elle contient correspondent aux valeurs stockées dans la chaîne.

Le tableau retourné n'est pas nécessairement terminé par un caractère nul.

Si empty() retourne true, le pointeur est un pointeur non nul qui ne doit pas être déréférencé.

(jusqu'à C++11)

Le tableau retourné est terminé par un caractère nul, c'est-à-dire que data() et c_str() remplissent la même fonction.

Si empty() retourne true, le pointeur pointe vers un caractère nul unique.

(depuis C++11)

Le pointeur obtenu à partir de data() peut être invalidé par :

  • Passer une référence non-const à la chaîne à n'importe quelle fonction de la bibliothèque standard, ou
  • Appeler des fonctions membres non-const sur la chaîne, à l'exception de operator[](), at(), front(), back(), begin(), end(), rbegin(), rend().
1) Modifier le tableau de caractères accédé via la surcharge const de data a un comportement indéfini.
2) Modifier le terminateur nul au-delà de la fin stocké à data() + size() en une valeur autre que CharT() a un comportement indéfini.

Paramètres

(aucun)

Valeur de retour

Un pointeur vers le stockage de caractères sous-jacent.

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

(jusqu'à C++11)

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

(depuis C++11)

Complexité

Constante.

Exemple

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
int main()
{
    std::string const s("Emplary");
    assert(s.size() == std::strlen(s.data()));
    assert(std::equal(s.begin(), s.end(), s.data()));
    assert(std::equal(s.data(), s.data() + s.size(), s.begin()));
    assert('\0' == *(s.data() + s.size()));
}

Voir aussi

( DR* )
accède au premier caractère
(fonction membre publique)
( DR* )
accède au dernier caractère
(fonction membre publique)
retourne une version non modifiable du tableau de caractères C standard de la chaîne
(fonction membre publique)
retourne un pointeur vers le premier caractère d'une vue
(fonction membre publique de std::basic_string_view<CharT,Traits> )