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 に答える