2017-06-05 88 views
-8

我有一個新的類的任務,我需要在C++中製作Hang子手。我得到了一切設置,但我無法弄清楚如何從用戶已經輸入的字符串中創建一個數組。這是我得到的。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 然後串,創建2個陣列字符稱爲 arrToGuess,arrCurrGuess 第一個數組將包含在字中的所有字母的用戶輸入,第二個數組將包含玩家猜到的所有字母。 如果用戶輸入單詞 編程 變量的值爲: 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