Verwendung von Nullzeichen in Strings (C ++)

Ich arbeite gerade an meinem C ++ und stolpere über ein merkwürdiges Verhalten in Bezug auf Zeichenfolgen, Zeichen-Arrays und das Null-Zeichen ('\0'). Der folgende Code:

#include <iostream>
using namespace std;

int main() {
    cout << "hello\0there"[6] << endl;

    char word [] = "hello\0there";
    cout << word[6] << endl;

    string word2 = "hello\0there";
    cout << word2[6] << endl;

    return 0;
}

erzeugt die Ausgabe:

> t
> t
>

Was ist hinter den Kulissen los? Warum speichern das Stringliteral und das deklarierte char-Array das't' bei Index 6 (nach dem internen'\0'), aber der deklarierte String nicht?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage