2017-09-06 6 views
1

配列の正確なサイズを割り当てようとしています。しかし、私は配列のサイズを計算する前にそれを初期化する必要があります。誰が私が今何をすべきか知っていますか? ありがとうございます!配列のサイズを初期化するためのC++の順序

b.t.w私はハンガマンゲームを作っています。楽しみのためだけです。

char letters[30]; 

strcpy(letters, word.c_str()); 

int wordLen = 0; 

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

    wordLen++; 

} 
+1

*どういう意味ですか?*配列のサイズを計算する前に初期化する必要がありますか?また、最初に配列が必要なのでしょうか? 'std :: string'が動作するはずです。 – NathanOliver

+2

'word'は[' std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)のように見えます。そうであれば、文字列のサイズを報告する['size()'](http://en.cppreference.com/w/cpp/string/basic_string/size)メンバメソッドがあります。いずれにしても、文字列の操作には 'std :: string'を使用する必要があります。 –

+0

'for'ループは非常に疑わしいです。それは、価値よりも価値のある文字を見つけるまでループします。これはあなたが達成しようとしていることですか? –

答えて

0

(あなたがあればそれを修正する方法についてのアドバイスのために、ここでやろうとしているかについての詳細な情報を提供する必要がありますそれはあなたがそのループでやろうとしているか、明確ではないが、それは非常に疑わしいです)必要に応じて、あなたのコードは、そのバッファと全くstrcpy()コール排除することによって、固定することができ、正確であると仮定すると:あなたは、元の変更ではない、変更する変数wordのコピーが必要な場合は

int wordLen = 0; 

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

が、その後、ちょうど別のstd::stringを作成しますコピーとしてのインスタンス。あなたのケースでは、生のchar配列を作成する理由はありません。

+0

また、ループ自体に問題があります。配列の終わりが反復されないとは言いません。たとえば、asciiを使用している場合、最初の文字は65から始まり、 'i'は' word.size() 'より簡単に大きくなる可能性があります。 – NathanOliver

+0

@ NathanOliver私は全く同意しますが、OPがそのループで何をしたいのかを理解するための情報は全くありません。それは非常に疑念であり、私はその答えに言及しました。たぶん私はそれをもっと明確にすべきです。 – Slava

+0

私は配列のサイズを取得しようとしていたし、より良い方法を見つけることができませんでした。私はこれをどうやってやるべきか知っていますか?申し訳ありませんが、私は経験豊富なプログラマーではありません... – Hidde8erberg