我有一个新的课程作业,我需要在c ++中制作Hangman。我已经完成了所有设置,但我无法弄清楚如何从用户已经输入的字符串中创建数组。这就是我得到的。
#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个名为chars的数组 arrToGuess,arrCurrGuess 第一个数组将包含用户输入的单词中的所有字母,第二个数组将包含玩家到目前为止正确猜出的所有字母。 如果用户输入单词 程序设计 变量的值将是: stringToGuess:“PROGRAMMING” arrToGuess:[P,R,O,G,R,A,M,M,I,N,G] arrCurGuess:[_,_,_,_,_,_,_,_,_,_,_] 你的工作就是让这项工作成功。 首先看一下这个程序:https://repl.it/IZQd/0 有些事要注意: 1)使所有的字母变成资本。
答案 0 :(得分: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]
我怀疑这不是你想要的。
答案 1 :(得分: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];
}