C++打开文件.txt,并取一个随机的单词(每行一个单词) 我从C++开始,我只是做一个迷你游戏,我想打开我的文件。 Hello Test Random Mysterious Nice Good Uber Facebook etc...

C++打开文件.txt,并取一个随机的单词(每行一个单词) 我从C++开始,我只是做一个迷你游戏,我想打开我的文件。 Hello Test Random Mysterious Nice Good Uber Facebook etc...,c++,file,text,C++,File,Text,在我的代码中,我在变量中添加了一个单词: 兰登 所以我如何打开一个file.txt,在我的文件中随机插入一个单词,然后插入到我的游戏中。我想我必须使用流,但我真的不知道如何使用它 代码: 这听起来非常像家庭作业,所以我将把代码留给你,并将答案限制在一般的指导上 我想我必须使用流 再试一次。顾名思义,ofstream用于输出,在本例中,您需要的是输入 获取一个随机单词——一个低效的本机解决方案需要计算行数/单词数,随机选取一个,然后向前跳过,直到到达为止。然而,这涉及到许多可以避免的不必要的操作

在我的代码中,我在变量中添加了一个单词:

兰登

所以我如何打开一个file.txt,在我的文件中随机插入一个单词,然后插入到我的游戏中。我想我必须使用流,但我真的不知道如何使用它

代码:


这听起来非常像家庭作业,所以我将把代码留给你,并将答案限制在一般的指导上

我想我必须使用流

再试一次。顾名思义,ofstream用于输出,在本例中,您需要的是输入

获取一个随机单词——一个低效的本机解决方案需要计算行数/单词数,随机选取一个,然后向前跳过,直到到达为止。然而,这涉及到许多可以避免的不必要的操作

另一种以不同方式效率低下的解决方案是将所有单词读入一个容器,然后从单词容器中随机选取一个索引。然而,如果你要做大量的随机选词,这个解决方案可能会更有效

对于单个单词,最好随机选择文件中的一个位置并向前搜索,直到找到下一个新行,然后从该位置读取一行。如果到达末尾时没有找到一行,这意味着位置恰好在最后一行,因此需要返回,直到找到第一行新行,这将表示文件中的最后一行并读取该行


在任何一种情况下,您都将以最小的开销随机选取一个单词作为结束。

std::ofstream用于输出,这就是类型名称中第一个“o”的含义。你需要STD::IFS-如何使用它,你可以在网上找到或者几乎所有的C++教科书。这是我以前学习的基本文件IO:。你需要的课程是std::如果你觉得有用谢谢我会尝试[教我],因为这看起来很像家庭作业,请与你的教授/老师合作。这个问题表明,在准备编写代码之前,您需要进行更多的解释。
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>

using namespace std;


string Shake(string str){

string melange;
int i(0);

while (str.size() != 0){

  i = rand() % str.size();
  melange += str[i];
  str.erase(i, 1);
 }

 return melange;
}

int main(){

std::cout << "Welcome to secret word : ";
string RandName("Random");
string Reponse("");
string RandNameShake("");
int cpt(0);
int lose(10);
int Replay(0);

srand(time(0));

std::cin >> Reponse;

while (RandName != Reponse && lose != 0) {
        RandNameShake = Shake(RandName);
        std::cout << "Wrong word ! " << '\n';
        std::cout << endl << "The secret word is : " << RandNameShake << endl;
        std::cout << "HIT : " << lose << '\n';
        std::cout << endl << "Try again : ";
        std::cin >> Reponse;
        cpt++;
        lose--;
}
if (lose == 0 ) {
    std::cout << endl << "Sorry you don't find the word ... " << '\n';
    std::cout << endl << "The word was : " << RandName <<'\n';
    std::cout << endl << "An other game ? 1/Yes 2/No" << '\n';

    std::cin >> Replay;
}
else
 std::cout << endl << "Good Game yu find the word in " << cpt << " hits" << endl;
 std::cout << endl << "An other game ? 1/Yes 2/No" << '\n';

 std::cin >> Replay;

if (Replay == 1) {
    main();
}
else if (Replay == 2) {
    std::cout << "All right see you soon :) !" << '\n';
    return 0;
}
else
     std::cout << "Don't understand i close the program" << '\n';
     return 0;

return 0;
}