提问者:小点点

将文本文件中的随机行转换为数字,然后输出数字,用户必须猜测原始行


我正在创建一段代码,用来模拟一个猜谜游戏,在这个游戏中,我从一个文本文件中拉出一条随机行,在这个例子中是“英超足球队”,然后我必须把这条随机行转换成相应的字母表中的数字,所以在“阿森纳”的例子中,我必须输出“1 18 19 5 14 1 12”。因为这是一个游戏,用户必须猜测数字的意思是“阿森纳”,然后输入,以获得一个点,并继续。到目前为止,我已经能够编写一个从文件中抽取随机行的方法,但是,我不确定如何将代码转换成数字而不输出答案,因为这是一个猜谜游戏。

这是文本的相关部分,但为了保持简短,我将不粘贴完整的代码

    vector<string> lines;

    srand(time(NULL));
    //ensures random selection on each new code run

    ifstream file("Premier_League_Teams.txt");
    //pulls the file from the directory

    int total_lines = 0;
    while (getline(file, line))
        //this function counts the number of lines in a text file
    {
        total_lines++;
        lines.push_back(line);
    }
    int random_number = rand() % total_lines;
    //selects a random entry from the text file
    //end of adapted code

    cout << lines[random_number];

我假设我必须执行一个switch语句,但我不知道如何将case语句应用于随机选择行,然后让用户输入纯英文文本


共1个答案

匿名用户

您可以声明一个类似std::string alphabet=“abcdefghijklmnopqrstuvwxyz”;的字符串,然后对于特定字符,如果您想找到等效的位置号,您可以使用str.find(char);str中获得char的索引,然后添加一个以获得其位置号。

为...;

#include <iostream>
#include <string>
using namespace std;
int main() {
    string alpha="abcdefghijklmnopqrstuvwxyz";
    string word="arsenal"; //word for which we will calculate numbers
    int codes[word.length()]={0}; //array in which we will store codes for letters
    for(int i=0;i<word.length();i++) { //iterate over each characte of string word
        codes[i]=alpha.find(word[i])+1; //assign codes correspoding element to (index of char)+1
    }
    for(int i=0;i<word.length();i++) {
        cout<<codes[i]<<" "; //outputting each codes element with a space in between
    }
}