In C++, wenn Sie ein Array von Zeichen übergeben, wenn Sie eine Klasse instanziieren, ist es möglich, die Bytes, die kopiert werden, zu begrenzen, um einen Überlauf zu verhindern, wenn Sie unsicher sind, wie viele Zeichen kommen?Überlauf verhindern, wenn ein Array von Zeichen an einen Klassenkonstruktor übergeben wird, der die Initialisierung des Konstruktors verwendet?
Meine Implementierung basiert nicht auf Benutzereingaben, also weiß ich, dass es in Ordnung sein wird, aber ich frage mich nach allgemeinem Wissen.
z.B. (von this post)
class test2 {
char name[40];
public:
test2() : name("Standard") {};
void display() { cout << name << endl; }
};
z.B. (Bearbeitete Version this post)
class test2 {
char name[40];
public:
test2(const char *charsComingIn) : name(charsComingIn) {};
void display() { cout << name << endl; }
};
Als Nebenbemerkung, ich habe nicht das zweite Beispiel getestet, aber das ist der Kern das, was ich versuche im Moment zu tun. Alle Korrekturen sind zum Konzept der Durchführung willkommen.
Sie können ein 'char [40]' nicht von einem 'const char *' initialisieren, also ... Problem vermieden! –
Es gibt 'strncpy'. In der Regel wird dies den verwalteten Lösungen wie 'std :: string' unterlegen. –
Sie übergeben kein Array von Zeichen. – immibis