2016-06-11 11 views
1

Ich frage mich, ob es andere Möglichkeit gibt, Char-Array mit null terminiert im Klassenkonstruktor abgesehen von For-Schleife. Mit for-Schleife funktioniert es gut. Aber ich nehme an, es sollte einen einfacheren Weg geben ... Oder liege ich falsch?Wie initialisiert man null beendet Array Char in Klasse

String::String() 
{ 
    for (int i = 0; i < 80; i++) 
     stringNew[i] = '\0'; 
} 
+0

Sie könnten etwas wie memcpy verwenden – hr0m

+0

Sie müssen das Array nicht zero füllen, damit es eine gültige nullterminierte Zeichenfolge ist. Die erste Null ist die einzige, die zählt. – Havenard

+0

versuchen Sie: 'char Array [SIZE] = {0};' oder 'memset (Array, 0, SIZE);' Memset erfordert, dass Sie entweder string.h oder Zeichenfolge enthalten, aber es wird keine Warnungen für einige Compiler geben . – Skywrath

Antwort

1

Wenn stringNew ein std::string ist, könnten Sie rufen Sie die constructor:

//Initializes 'stringNew' with 80 times '\0' 
String::String() : stringNew(80, '\0') {} 

Wenn es ein char[] ist, könnten Sie std::fill nennen:

String::String() 
{ 
    std::fill(std::begin(stringNew), std::end(stringNew), '\0'); 
} 

Sie auch die Schleife verwenden könnte , wie in deinem Beispiel.

1

Do it diese Weise:

class String 
{ 
    String() : stringNew() {} 
    char stringNew[40]; 
}; 

C++ initialisiert automatisch den Vektor mit Nullen. Seit (int) '\ 0' == 0 hast du, was du brauchst.