尝试使用fstream打开文件,但它无法正常工作

时间:2014-04-01 23:53:15

标签: c++ fstream

我正在尝试运行此文件,但文件始终无法加载。我想要做的是将字典加载到一个数组中,每个级别的数组占一个字。

#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();
}

2 个答案:

答案 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倍。现在你在“内部”所需的单词,任务是分别回读和转发工作的开始和结束。该算法将显示略微不同的概率分布。 第三名。如果您计划重用文件数据,将整个文件读入内存会快得多,然后按字分割,将字偏移存储为整数数组。 最后。使用非常庞大的词典(或者如果程序在有限的内存上运行),可以仅存储单词偏移量,并在运行中重新读取字典内容。