2016-06-12 28 views
0

Ich wiederhole die Grundlagen von C++, um die Grundlagen zu verstehen. Ich frage mich, warum mein C++ - Programm den vollständigen String druckt, wenn ich den längeren String in das Zeichen-Array eingabe, das kürzer als der Eingabe-String ist.Längere Zeichenfolge durch cin-Funktion zu einem kürzeren Zeichenarray

#include <iostream> 

int main() 
{ 
    using namespace std; 
    const int Size = 2; 
    char carr[Size]; 

    cin >> carr; 
    cout << carr << endl; 
} 

Wenn mir Eingang „ABCDE“, um das Programm, gebe ich die ganze Zeichenfolge „abcde“, auch wenn das Zeichenfeld carr ‚s Länge ist nur 2.

Wie funktionierts?

+3

Es * passiert * scheint zu funktionieren. – MikeCAT

Antwort

0

Wenn Sie einen "langen" String in einen "kurzen" char[] eingeben, schreiben Sie in den Speicher, den Sie nicht zugewiesen haben. Dies hat undefiniertes Verhalten in C [++], und es kann auch in bestimmten Situationen funktionieren, es kann sehr gut auch mit einem Segmentierungsfehler abstürzen.