我正在尝试运行此文件,但文件始终无法加载。我想要做的是将字典加载到一个数组中,每个级别的数组占一个字。
#include <iostream>
#include <string>
#include <fstream>>
#include <time.h>
#include <stdlib.h>
using namespace std;
int Rand;
void SetDictionary(){
srand(time(NULL));
Rand = rand() % 235674;
fstream file("Hangman.txt");
if(file.is_open()){
string Array[235675];
for(int X = 0; X < 235673; X++){
file >> Array[X];
}
cout << Array[Rand];
}else{
cout << "Unable To Open File\n";
}
}
int main(){
SetDictionary();
}
答案 0 :(得分:4)
vector<string> words;
{
ifstream file("Hangman.txt");
string word;
while (file >> word)
{
words.push_back(word);
}
}
string randword = words[rand() % words.size()];
答案 1 :(得分:0)
首先,我看到你在cout&lt;&lt;之后没有重用Array。数组[兰德]完成了。在这种情况下,您根本不需要数组。如果条件X == Rand,则逐行读取文件到temp变量和cout这个变量,然后中断。 第二,可以改进实施。假设您正在尝试从文件中输入随机单词。生成Rand作为0..file-size,然后偏移到此Rand将快1000倍。现在你在“内部”所需的单词,任务是分别回读和转发工作的开始和结束。该算法将显示略微不同的概率分布。 第三名。如果您计划重用文件数据,将整个文件读入内存会快得多,然后按字分割,将字偏移存储为整数数组。 最后。使用非常庞大的词典(或者如果程序在有限的内存上运行),可以仅存储单词偏移量,并在运行中重新读取字典内容。