我需要访问一个随机的.txt文件,或一个.txt文件的随机行,并把它输出到屏幕上
I need to access a random .txt file, or a random line of a .txt file and out put it to the screen
我要做的是创建一个(看似)随机的事实生成器,方法是选择一个包含事实的随机.txt文件,并将其输出到屏幕上。下面是代码:
#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;
char randomQuestion;
string easyBib;
string Questions /*[15]*/;
string Answers /*[15]*/;
ifstream inputFile;
//char newline = 'n';
//char chars;
//int linenum = 1;
string line;
char randomQ;
//cout << "%s by Noah" << endl;
cout << "Quiz Menunn";
cout << "1. Play Game!n";
cout << "2. Bibliographyn";
cout << "3. Developer Infon";
//cout << "4. Admin Menun";
cout << "4. Exitn";
cout << "Menu Choice: ";
cin >> mainMenuChoice;
switch (mainMenuChoice) {
case 1: {
srand ( time(NULL) );
randomQuestion = rand() % 10 + 1;
randomQ = '0' + randomQuestion;
randomQ = randomQ + '.txt';
inputFile.open(randomQ);
getline(inputFile, line);
vector<string> lines;
for( string line; getline(inputFile,line); )
{
lines.push_back(line);
}
size_t iRandLine = rand() % lines.size();
string randomLine = lines[iRandLine];
cout << "Line " << (iRandLine+1) << ": " << randomLine << endl;
break;
}
case 2: {
inputFile.open("Bib.txt");
//istream& getline (char* s, streamsize n, char n )
inputFile >> easyBib;
cout << easyBib << endl;;
return(0);
}
case 3: {
cout << "Program made by: XXXX XXXXXXXX" << endl;
cout << "Mrs. XXXXXXX's Period 4 Social Studies Class" << endl;
break;
}
case 4: {
cout << "Thank you for playing!" << endl;
return(0);
}
default: {
cout << "Sorry, Invalid Choice!n";
return(2);
}
}
return(0);
}
我也得到这个编译错误:
52: error: invalid conversion from 'char' to 'const char*'
52: error: initializing argument 1 of 'void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]'
非常感谢大家。
如果适用,我使用XCode 3.2.6,和Mac OS X 10.6.8请不要让我升级或下载任何东西,这是学校的笔记本电脑,我没有sudo权限。
如果你知道任何脚本语言,如Python或Perl,你可能应该使用它们而不是c++来做你想做的事情;对于你想做的事情,它们有更直观的工具,语法也干净得多。
如果你打算继续使用c++,你可能会考虑这样做;
- 将每个文本文件放在一个文件夹中(我们称之为
questions
),并将其文件名设置为整数(没有扩展名)。 - 随机生成一个整数,可能有最大值(取决于你如何对这些问题进行编号)。
- 如果
questions
中存在一个以该整数命名的文件(例如,如果您绘制41,那么如果./questions/41
存在),则使用它。如果没有,重新绘制。
相关文章:
- 使用std::mt19937从字符串中返回一个随机单词
- 如何生成一个随机的 n 位数,其中 n 是任意的
- 当我尝试使用它时,Scanf 会抛出一个随机异常(scanf_s 也是如此)
- C++14 : 2 个随机生成器 - 一个有效,另一个无效
- 我将如何在 cpp 中生成一个随机且独特的标题
- 从C++数组中选择一个随机元素
- 随机自动点击器C++使用一个键进行开/关
- 如何将矩阵的行随机复制到内存中的另一个矩阵的过程并行化?
- 如何更改此notify_one以便它选择一个随机线程
- 为什么我的函数名称中会随机出现一个额外的字母
- 如何编写一个递归函数,以随机的方式混淆从0到6的数字
- C++ 在运行时选择一个随机对象
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- C++ 制作一个随机数字/字母生成器,代码中有问题
- 将一个随机的字符序列和int序列解析为单独的向量
- 如何在C 程序中随机做一个
- C 从向量的子集返回一个随机值
- 如何创建一个随机访问式的Rreference以访问.RC文件中定义的资源
- 随机生成一个没有重复元素的枚举数组 (C++)
- 堆缓冲区溢出随机发生。对于一个简单的代码?(我是C++新手)