2017-06-05 92 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