¿Cómo copiar un carácter de una cadena básica a una cadena vector en C++?
class Hangman
{
private:
vector<string> dictionary; //almacena todas las palabras
vector<string> secretWord; //almacena la palabra secreta
vector<string> misses; //registra las letras incorrectas
vector<string> displayVector; //almacena "_"
string originalWord; //almacena una copia de la palabra secreta para mostrarla al final del juego
bool gameOver = false; //bandera para verificar si el jugador ha perdido o sigue en el juego
int totalAttempts;
public:
void selectRandWord();
};
//Este es el código con el que estoy teniendo problemas.
void Hangman::selectRandWord()
{
secretWord.clear();
//word es un string básico que almacena una palabra aleatoria. Digamos “Hola mundo”.
string word;
srand(time(NULL));
int random = (rand() % dictionary.size()) + 1;
//Almaceno una palabra aleatoria del vector en word.
word = dictionary[random];
transform(word.begin(), word.end(), word.begin(), ::tolower);
originalWord = word;
for (int index = 0; index < word.length(); index++)
{
//Esta línea tiene el error: [Error] invalid user-defined conversion from ‘char’ to ‘std::vector<std::basicstring
//Lo que intento hacer es tomar cada carácter de word (por ejemplo, “H”) y agregarlo al vector string secretWord.
secretWord.push_back(word[index]);
}
}
davy.ai
Pregunta
¿Cuál es el propósito de la función
selectRandWord()
en la claseHangman
? ¿Cuál es el error en la función y cómo lo arreglarías?Respuesta
La función
selectRandWord()
en la claseHangman
se utiliza para seleccionar aleatoriamente una palabra del vectordictionary
y almacenarla en el vectorsecretWord
. Esta función se llama al comienzo del juego para seleccionar una palabra para que el jugador adivine.El error en la función es que intenta introducir un carácter en un vector de cadenas de texto
vector<string> secretWord
, lo cual no está permitido. En su lugar, deberíamos agregar una cadena de texto de longitud 1 que contenga el carácter. Para solucionar este error, podemos reemplazar la línea:“`c++
secretWord.push_back(word[index]);
Esto creará una nueva cadena de texto con el carácter y la agregará de vuelta al vector
secretWord
.