我正在创建一段代码,用来模拟一个猜谜游戏,在这个游戏中,我从一个文本文件中拉出一条随机行,在这个例子中是“英超足球队”,然后我必须把这条随机行转换成相应的字母表中的数字,所以在“阿森纳”的例子中,我必须输出“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语句应用于随机选择行,然后让用户输入纯英文文本
您可以声明一个类似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
}
}