es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo copiar un carácter de una cadena básica a una cadena vector en C++?

imagen de descripción de entrada //Definición de la clase

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 >::valuetype&& {aka std::basic_string&&}’ [-fpermissive]

//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]); 
    } 
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Pregunta

    ¿Cuál es el propósito de la función selectRandWord() en la clase Hangman? ¿Cuál es el error en la función y cómo lo arreglarías?

    Respuesta

    La función selectRandWord() en la clase Hangman se utiliza para seleccionar aleatoriamente una palabra del vector dictionary y almacenarla en el vector secretWord. 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]);


    con: ```c++ secretWord.push_back(string(1, word[index]));

    Esto creará una nueva cadena de texto con el carácter y la agregará de vuelta al vector secretWord.

Comments are closed.