2017-09-06 1 views
1

Ich versuche, die genaue Größe des Arrays hier zuzuordnen. Allerdings muss ich es initialisieren, bevor ich die Größe des Arrays berechnen. Weiß jemand, was ich jetzt tun soll? Vielen Dank im Voraus!C++ Reihenfolge der Operationen zum Initialisieren einer Array-Größe

b.t.w Ich mache ein Hangman-Spiel, nur zum Spaß.

char letters[30]; 

strcpy(letters, word.c_str()); 

int wordLen = 0; 

for (int i = 0; i < letters[i]; i++){ 

    wordLen++; 

} 
+1

Was meinst du mit * Allerdings muss ich es initialisieren, bevor ich die Größe des Arrays berechnen. *? Brauchen Sie sogar überhaupt ein Array? Eine 'std :: string' sollte funktionieren. – NathanOliver

+2

'Wort' sieht aus wie eine [' std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string). Wenn dies der Fall ist, gibt es eine [size() '] (http://en.cppreference.com/w/cpp/string/basic_string/size) -Membermethode, die die Größe der Zeichenfolge angibt. In jedem Fall sollten Sie mit 'std :: string' für Ihre Stringmanipulation bleiben. –

+0

Diese 'for' Schleife sieht sehr suspekt aus. Es wird eine Schleife durchlaufen, bis es einen Buchstaben findet, dessen Wert nicht kleiner ist als seine Position. Ist das das, was du erreichen willst? –

Antwort

0

Es ist nicht klar, was Sie mit dieser Schleife zu tun versuchen, und es sieht sehr verdächtig (Sie müssen auf mehr Informationen liefern, was Sie versuchen hier um Rat zu tun, wie es zu beheben, wenn notwendig), aber unter der Annahme, es richtig ist, den Code durch die Beseitigung dieser Puffer und strcpy() Anruf überhaupt festgelegt werden kann:

int wordLen = 0; 

for (int i = 0; i < word[i]; i++){ 
    wordLen++; 
} 

wenn Sie eine Kopie der variablen word ändern müssen, nicht Original zu verändern, dann erzeuge einfach eine neue std::string Instanz als Kopie. Es gibt keinen Grund, in Ihrem Fall ein RAW-Char-Array zu erstellen.

+0

Auch die Schleife selbst hat Probleme. Es gibt nichts zu sagen, dass es das Ende des Arrays nicht iterieren wird. Wenn sie zum Beispiel ascii verwenden, beginnt der erste Buchstabe bei 65, so dass "i" leicht größer als "word.size()" werden kann. – NathanOliver

+0

@NathanOliver Ich stimme völlig zu, aber es gibt keine Informationen, um zu verstehen, was OP in dieser Schleife machen möchte. Es ist sehr suspision und ich erwähnte das in meiner Antwort. Vielleicht sollte ich es klarer machen. – Slava

+0

Ich habe versucht, die Größe des Arrays zu bekommen, und konnte keinen besseren Weg finden. Weißt du wie ich das machen soll? Tut mir leid, ich bin kein erfahrener Programmierer ... – Hidde8erberg

Verwandte Themen