gpt4 book ai didi

c++ - 我需要访问一个完全随机的小文本文件行,并在 C++ 中的另一个文本文件中导入同一行

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:20 25 4
gpt4 key购买 nike

我希望访问一个小文本文件的完全随机行,并将同一行导入 C++ 程序中的另一个文本文件。我需要相当简单地执行此操作,我是 C++ 编程的初学者。我将包含 main.cpp。如果您需要其他 .cpp.h,请告诉我,我会发布。

主要.cpp:

#include <fstream>
#include <iomanip>
#include <iostream>
#include <cmath>
#include <ctime>
#include <string>
#include <vector>

#include "getQuestion.h"

using namespace std;

int main() {
int mainMenuChoice;
ifstream Bibliography;
//string easyBib;
string easyBib;
ifstream inputFile;

cout << "Quiz Menu\n\n";
cout << "1. Play Game!\n";
cout << "2. Bibliography\n";
cout << "3. Developer Info\n";
//cout << "4. Admin Menu\n";
cout << "4. Exit\n";
cout << "Menu Choice: ";
cin >> mainMenuChoice;

switch (mainMenuChoice) {
case 1:
//int getQuestion(string Q,A);
//cout << Q;
break;
case 2:
inputFile.open("Bib.rtf");
inputFile >> easyBib;
cout << easyBib << endl;
break;
case 3:
cout << "Program made by: XXXX XXXXXXXX" << endl;
cout << "XXX. XXXXXXX'X Period 4 Social Studies Class" << endl;
break;
/*case 4:
break;*/
case 4:
cout << "Thank you for playing!" << endl;
return(0);
default:
cout << "Sorry, Invalid Choice!\n";
return(0);
}
return(0);
}

最佳答案

最简单的解决方案是逐行读取整个文件(使用 getline )到 vector<string> 中.然后从该 vector 中选择一个随机元素就很简单了。

您可以像这样从输入流中读取一行:

string line;
getline( inputFile, line );

它返回流的引用,可以直接测试错误。所以这很容易变成这样的循环:

vector<string> lines;
for( string line; getline(inputFile,line); )
{
lines.push_back(line);
}

现在您可以使用 size vector的功能以确定您已阅读了多少行,然后随机选择一行。

size_t iRandLine = rand() % lines.size();
string randomLine = lines[iRandLine];
cout << "Line " << (iRandLine+1) << ": " << randomLine << endl;

当然,你要知道会少于RAND_MAX文件中的行。否则,您将不得不合并对 rand 的多次调用。只是为了覆盖范围。

关于c++ - 我需要访问一个完全随机的小文本文件行,并在 C++ 中的另一个文本文件中导入同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com