尝试使用 fstream 打开文件,但它不起作用

Trying to open file using fstream but it is not working

本文关键字:文件 不起作用 fstream      更新时间:2023-10-16

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

#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 Filen";
}
}
int main(){
SetDictionary();
}
vector<string> words;
{
    ifstream file("Hangman.txt");
    string word;
    while (file >> word)
    {
        words.push_back(word);
    }
}
string randword = words[rand() % words.size()];

起初,我看到你在 cout <<Array[Rand] 完成后不会重用数组。在这种情况下,您根本不需要数组。将文件逐行读取到临时变量中,如果条件 X==Rand 则删除此变量,然后中断。其次,可以改进执行。假设您正在尝试从文件中获取随机单词。将 Rand 生成为 0..file size,然后偏移到此 Rand 的速度要快 1000 倍。现在你"在"想要的单词中,任务是分别来回和向前阅读工作开始和结束。此算法将显示略有不同的概率分布。第三。如果您计划重用文件数据,将整个文件读入内存,然后按单词拆分,将单词偏移量存储为整数数组会快得多。最后。对于非常庞大的词典(或者如果程序在有限的内存上运行),可以只存储单词偏移量,并即时重新读取字典内容。