Im folgenden Programm,Verschwunden Zeichen in String Aber Zugänglich mit dem Index
int main()
{
int i;
string a;//unallocated string;
for(i=0;i<26;i++)
{
a[i]=i+97;// trying to write a char at index i of a
}
cout<<" a[i] : ";
for(i=0;i<26;i++)
{
cout<<a[i];// printing the characters
}
cout<<"\n a as string : "<<a; // the string disappeared
}
Ausgang:
a [i]: abcdefghijklmnopqrstuvwxyz
eine als String:
Meine Fragen sind
Wo sind die Zeichen, die in den Indizes von String a gespeichert sind?
Warum gibt es keinen Fehler, wenn ich versuche, in einer nicht zugewiesenen Zeichenfolge zu schreiben?
Kann jemand erklären, was passiert?
Ich benutze gcc mit C++ 11
Sie schreiben aggressiv in nicht zugeordneten Speicher, das ist was los ist. Wo sind sie gespeichert? Irgendwo undefiniert. Warum kein Fehler? Weil C und C++ nicht nach schlechter Programmierung suchen. –
Undefiniertes Verhalten. – Mahesh
Versuchen Sie 'a.at (i) = i + 97;' anstelle von 'a [i] = i + 97; '. Pass auf was passiert. Ihr "Fehlerprüfer" ist der 'at()' Aufruf. – PaulMcKenzie