boost::array<char,7> buf = {'a','b','c','d','e','f','g'};
...
...
std::cout << buf.data() + 5;
Il est l'affichage: fgComment comprendre la méthode data() de boost :: array, et return add length?
Comment comprendre?
buf.data() + 5
Merci
boost::array<char,7> buf = {'a','b','c','d','e','f','g'};
...
...
std::cout << buf.data() + 5;
Il est l'affichage: fgComment comprendre la méthode data() de boost :: array, et return add length?
Comment comprendre?
buf.data() + 5
Merci
buf.data()
semble renvoyer un pointeur vers la mémoire tampon de réseau interne en question. À partir de là, l'arithmétique du pointeur standard s'applique, et vous voyez le 6ème caractère à partir de l'appel std::cout.operator<<
.
buf.data()
est défini pour renvoyer un pointeur sur le premier élément du tableau, et les éléments d'un Boost.Array sont définis comme contigus.
Donc buf.data() + 5
sera un pointeur vers l'élément (dans ce cas, le caractère) du tableau. Vous pouvez également écrire &buf[5]
et obtenir le même pointeur.
Notez que dans le code ci-dessus:
std::cout << buf.data() + 5;
vous tentez d'imprimer la valeur du pointeur, pas le caractère il pointe.
http://www.learncpp.com/cpp-tutorial/68-pointers-arrays-and-pointer-arithmetic/ – Uniquora