1

我要做的是创建一个(看似)随机事实生成器,方法是选择一个包含事实的随机 .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 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: {
        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 权限。

4

1 回答 1

1

如果您知道任何脚本语言,例如 Python 或 Perl,那么您可能应该使用它们而不是 C++ 来做您想做的事情;它们为您想要做的事情提供了更直观的工具,并且语法更简洁。

如果您要坚持使用 C++,这就是您可能会考虑的;

  • 将每个文本文件放在一个文件夹中(我们称之为questions),并将其文件名设置为整数(无扩展名)。
  • 随机生成一个整数,可能具有最大值(取决于您如何对这些问题进行编号)。
  • 如果存在questions以该整数命名的文件(即,如果您绘制 41,则如果./questions/41存在),请使用它。如果没有,请重新绘制。

顺便说一句,你不会碰巧在长岛上高中吧?如果是这样,我想我们可能去了同一所学校(虽然我毕业了)。

于 2012-12-31T21:16:23.860 回答