0

txt ファイルを入力として受け取り、テキスト ファイル内の単語から ques を使用して .h ファイル (そしてできれば後で) .cpp ファイルを生成するプログラムを作成しようとしています。このコードは正常にコンパイルされます。入力ファイルを取得すると、セグメンテーション違反 11 になります。誰か助けてくれませんか?

#include <iostream>
#include <fstream>
#include "12337756_Library.cpp"
#include <string>
#include <vector>

using namespace std;

int main()
{
    bool a;
    string filename;
    string line;
    vector<string> Attr;

    cout << "Enter input file name:";
    getline(cin, filename);

    ifstream fin(filename.c_str());

    if (fin)
    {
        while(!fin.eof())
        {
            getline(fin, line);
            createNewFile(line);
            Attr.push_back(line); 
        }
        if(Attr[1]=="Movie.h")
        {
            bool x,y;
            //x=createNewFile(Attr[0]);
            y=createNewFile(Attr[1]);
            if(x)
            {
                ofstream fout(Attr[1].c_str());
                fout << "#ifndef HEADER_H_" << endl << "#define HEADER_H_" << endl;
                fout << "#include <iostream>" << endl << "#include <vector>" << endl;
                fout << "using namespace std;" << endl;
                fout << "enum Movie_Rating {G,PG,PG13,R,NC17,NR} ;" << endl;
                fout << endl << endl << endl;
                fout << "class Movie" << endl << "{"<< endl;
                fout << "public: " << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << "// ----- Constructors -----------------------------------" << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << endl << "Movie();" << endl << "Movie(const string& title);" << endl;
                fout << "Movie(const string& title, const string& director, Movie_Rating rating,unsigned int year,const string& path,const string& actor); " << endl;
                fout << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << "// ----- Destructor -------------------------------------" << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << endl;
                fout << "~Movie();" << endl << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << "// ----- Inspectors -------------------------------------" << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << endl;
                fout << "string getTitle() const;" << endl;
                fout << "string getDirector() const;" << endl;
                fout << "Movie_Rating getRating() const ;" << endl;
                fout << "unsigned int getYear() const ;" << endl;
                fout << "string getURL() const ;" << endl;
                fout << "string getActor(unsigned int i) const ;" << endl;
                fout << "int getActorNumber() const ;" << endl;
                fout << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << "// ----- Mutators ---------------------------------------" << endl;
                fout << "// ------------------------------------------------------" << endl;
                fout << endl;
                fout << "void setTitle(const string& title);" << endl;
                fout << "void setDirector(const string& director) ;" << endl;
                fout << "void setRating(Movie_Rating rating)  ;" << endl;
                fout << "void setYear(unsigned int year)  ;" << endl;
                fout << "void setURL(const string& path)  ;" << endl;
                fout << "void setActor(const string& actor);" << endl;
                fout << endl;
                fout << "//-----------------------------------------------------------" << endl;
                fout << "//------- Facilitators --------------------------------------" << endl;
                fout << "//-----------------------------------------------------------" << endl;
                fout << "void output(ostream & out);" << endl;
                fout <<"// ----------------------------------------------------------" << endl;
                fout <<"// ----------------------------------------------------------" << endl;
                int size = Attr.size();

                while(size!= 1)
                {
                    fout << Attr[size] << endl;
                    size--;
                }
                fout << "};" << endl;
            }
        }
    }
}
4

1 に答える 1

1

1つだけプッシュバックしたstd::stringため、ベクトルには1つの要素しか含まれていません。その1つの要素にアクセスするには、 Attr[0]notを使用しますAttr[1](コード内にアクセスする場所がいくつかあります)。C ++では、インデックスはで始まり、0ではないことを覚えておいてください1

また、次のコードではをsize()返す1ため、whileループに入ることがありません。

int size = Attr.size();

while(size!= 1)
{
    fout << Attr[size] << endl;
    size--;
}
于 2012-04-25T22:48:05.627 に答える