2017-06-05 17 views
-8

私はHangmanをC++で作成する必要がある新しいクラス割り当てがあります。私はすべてが設定されているが、ユーザーがすでに入力した文字列から配列を作成する方法を理解することはできません。ここに私が持っているものがあります。C++配列からの文字列

#include <iostream> 
using namespace std; 

int main(){ 
    string stringToGuess; 
    cout << "Hello user, please enter a word to play hangman" << endl; 
    cin >> stringToGuess; 
    int arrLength = stringToGuess.length(); 
    cout << arrLength << endl; 
    char arr_To_Guess[arrLength] = {atoi(stringToGuess.c_str())}; 
    for (int i = 0; i < arrLength; i++){ 
     cout << arr_To_Guess << " "; 
    } 
} 

私は文字列から配列を作成せずにこれを達成できることを認識していますが、割り当てで行う必要があります。 。あなたの先生からの指示: 私たちはこれを一歩一歩進めるつもりです。 、単語を入力するようユーザーに依頼次に stringToGuess と呼ばれる文字列に保存し、 arrToGuess、arrCurrGuess 最初の配列は、単語の文字のすべてが含まれますと呼ばれる文字の2つの配列を作成します。ここで は最初のステップですユーザーが入力した場合、2番目の配列には、プレイヤーがこれまでに正しく推測したすべての文字が含まれます。 という語をユーザが入力した場合 stringToGuess: "PROGRAMMING" arrToGuess:[P、R、O、G、R、A、M、M、I、N、G] arrCurGuess:[_、_、_、_、_、_、_、_、_] あなたの仕事はこの仕事をすることです。 このプログラムを最初に見てください:https://repl.it/IZQd/0 注意すべき事項: 1)すべての文字を大文字にしてください。

+6

なぜ配列が必要ですか?文字列は配列の抽象であり、文字列のように使うことができます。 – NathanOliver

答えて

0

コンパイル時に配列の長さがわからないため、自動配列を使用することはできません。配列は動的に割り当てられる必要があります。文字列を配列にコピーする最も簡単な方法は、std::vectorを使用することです。

しかし、文字列から配列を作成するというあなたの希望は悪い考えです。あなたはおそらくそれをする必要はありません。

cin >> stringToGuess; 
for (char c : stringToGuess) { 
    cout << c << " "; 
} 

char arr_To_Guess[arrLength] 

私は前に述べた問題は、arrLengthはコンパイル時に知られていないので、この宣言は悪い形成されている:あなたはこのようなあなたのループを書き換えることができます。

= {atoi(stringToGuess.c_str())}; 

これは非常に奇妙です。新しい配列の最初の文字を初期化して、文字列が表すものの数値を取得しようとします。例:

string: "123" 
becomes: [123, 0, 0] 

これはあなたが意図したものではないと思われます。

0

ご存知のとおり、文字列はcharの配列です。それはあなたがこれを行うことができることを意味します。

string stringToGuess; 
    cout << "Hello user, please enter a word to play hangman" << endl; 
    cin >> stringToGuess; 
    for(int i = 0; i < stringToGuess.length(); i++) 
    { 
     cout << stringToGuess[i]; 
    } 
+0

'std :: string'は' << "演算子をオーバーロードするので、手書きループは必要ありません。 – George