finde die Anzahl der Strings im 2D-String-Array

8

Bei einem Array von Strings muss ich die Anzahl der Strings herausfinden.

Ich folgte this

aber das funktioniert nicht, wenn ich das in eine Funktion übergebe.

Hier ist der Code, den ich versucht habe

%Vor%     
Guru 17.04.2015, 09:10
quelle

2 Antworten

8

sizeof(char*) gibt Ihnen die Größe des char* Zeigers (welcher 4 auf Ihrem System ist).

sizeof(str2) gibt Ihnen die Größe des Arrays str2 . Es gibt 8 Elemente, jedes ist ein Zeigertyp. Also die Gesamtgröße auf Ihrem System ist 8 x 4 = 32.

Um die Länge eines Strings zu erhalten, verwenden Sie strlen .

Betrachten Sie std::vector<std::string>> als Alternative in C ++.

    
Bathsheba 17.04.2015 09:12
quelle
1

Sie können die Länge eines Arrays nicht kennen, wenn Sie nur einen Zeiger darauf haben. Und Sie haben nur einen Zeiger, weil Sie Arrays nicht nach Wert übergeben können. Arrays, die an eine Funktion übergeben werden, werden automatisch zu einem Zeiger zerfallen und der Argumenttyp char* foo[] entspricht char** foo . size_of hilft nicht, da es nur die Größe des Zeigers selbst angibt.

Übergeben Sie die Länge als Argument an f1 . Oder noch besser, verwenden Sie std::vector oder std::array .

  

Ich kann den gegebenen Funktionsprototyp nicht ändern

Nun, das ist bedauerlich. Dann müssen Sie auf einige Tricks zurückgreifen. Die einfachste Lösung besteht darin, die Länge in einer globalen Variablen anstelle eines Funktionsparameters zu speichern.

Eine andere Möglichkeit ist ein abschließender Wert. Zum Beispiel, beende das Array immer mit nullptr und erlaube niemals anderen Elementen, diesen Wert zu haben. Genauso wie C-Strings mit Nullzeichen enden. Dann können Sie aufhören, das Array zu durchlaufen, wenn Sie auf nullptr stoßen. Aber ich nehme an, dass Sie das Array auch nicht ändern können.

    
user2079303 17.04.2015 09:24
quelle

Tags und Links