#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str1[10] = "Hello";
char str2[10] = "World";
int len ;
strcat(str1, str2);
len = strlen(str1);
cout << len << endl<<str1<<endl;
return 0;
}
Wenn ich initialisieren str1 wie diese char str1[5]="hello";
, C++ Compiler mir ein Fehler gibt (bedeutet, dass die Größe der Zeichenfolge sein muss 1 mehr als die gegebene Zeichenkette). Aber in der strcat
sind wir verkettet str1
mit str2
mit der Größe der ersten Zeichenfolge ist 10 und die Länge der Zeichenfolge ist auch 10 (bedeutet kein extra Nullzeichen). Warum ändert sich dieses Verhalten? Konvertieren wir C++ - String mit C-String in strcat
Funktion, bitte erläutern.C++ String Verhalten unterscheidet sich bei der Definition und in strcat funtion
Wenn Sie Compiler-Fehler erhalten ist es immer ehlpful, wenn Sie sie auf Ihre Frage hinzufügen – Hayt
Sie sind nicht C++ Strings in irgendeiner Weise mit so Sie haben damit nichts zu tun. Ansonsten weiß ich nicht wirklich, was du verlangst. Sie rufen jedoch undefiniertes Verhalten auf. –
Sie müssen die [Referenz] (http://en.cppreference.com/w/cpp/string/byte/strcat) konsultieren. Da das Ziel nicht groß genug ist, haben Sie ein undefiniertes Verhalten. – NathanOliver