c++ - 协助 getRandomCode
问题描述
任何人都可以帮我处理我的代码,如下所述,我需要创建一个名为 getRandomCode 的函数来从文本文件中获取 10 个代码,读取它们,然后随机选择一个作为密码。我开始了,但我坚持需要一些帮助才能继续前进
一个函数 (getRandomCode),它将一个四元素整数数组(代码)作为输入。然后该函数将继续打开文件 codes.txt 并尝试读取最多 10 个四位数代码。如果文件无法打开,该函数应返回 false。否则,该函数将按如下方式进行: – 读取文件的每一行并将其放入一个数组中(我推荐一个包含 10 个字符串的数组)。– 读取代码后,您应该播种随机数生成器 (srand(time(0))) 并使用 rand() 在 0 和您读取的代码数之间选择一个随机数。提示:考虑一下您的文件处理循环将如何跟踪读取的代码数量。
– 一旦您选择了一个随机代码,您必须将数字复制到四元素数组代码的相应元素中。为此,您需要
将字符转换为数字。例如,由于每个字符都是一个数字,我们只需从所选代码字符串的零位字符中减去“0”,并将结果分配给 code[0]。– 填充代码数组后,我们返回 true 表示成功。您可以放心地假设该文件的格式设置为每行只有一个代码。但是,您可能不会假设文件中正好有 10 个代码。
这是我到目前为止所拥有的:
int getRandomCode(int code[4])
{
ifstream inFile;
inFile.open("codes.txt");
int getCode[10];
int a = 0;
if(!inFile){
cout<<"Error opening output file"<< endl;
return -1;
}
while(!inFile.eof())
{
getline(inFile, getCode[a], '');
srand(time(0));
int randomInt = (rand(getCode));
}
}
解决方案
读取多个整数的首选方法
这是一个用于读取多个整数、空格或换行符分隔并放入数据库的代码片段:
int value;
std::vector<int> database;
while (inFile >> value)
{
database.push_back(value);
}
您可以将std::vector
其视为一个数组,例如value = database[3];
. 该std::vector
作品也很好std::sort
。
限制输入数量
您可以添加一些额外的代码来限制读取的数字数量:
const size_t MAXIMUM_INTEGERS = 10;
size_t quantity = 0;
int value;
std::vector<int> database;
while ((quantity < MAXIMUM_INTEGERS) && (inFile >> value))
{
database.push_back(value);
++quantity;
}
读入数组
如果一定要使用数组(因为赋值限制),代码类似上面的限制代码:
const size_t MAXIMUM_INTEGERS = 10;
size_t quantity = 0;
int value;
int array[MAXIMUM_INTEGERS];;
while ((quantity < MAXIMUM_INTEGERS) && (inFile >> value))
{
array[quantity] = value;
++quantity;
}
读取字符串
读取字符串而不是整数使用相同的方法/模式:
std::string number_as_text;
size_t quantity_read = 0;
std::vector<std::string> database;
while (std::getline(inFile, number_as_text))
{
database.push_back(number_as_text);
++quantity_read;
}
推荐阅读
- angular - Tinymce Angular 2 响应式文件管理器
- selenium - 删除“TooLongFrameException”限制 (http)
- java - 如何向具体用户发送 websocket 消息?
- ionic3 - Ionic image picker plugin, showing image not working
- sql-server - SQL 查询中的变量
- r - 更新数据框
- java - 测试API时如何避免代码重复
- c++ - 在 Linux 上构建 c++ 包时 autogen.sh 的工作是什么
- python - Python3,如果两个变量具有相同的值,那么它们是否具有相同的地址?
- react-native - Android 通知图标不会出现,并且始终是方形/圆形