ユーザーが自分の DVD を追跡できるようにするプログラムを作成しようとしています。各映画にこれらの属性を含む入力ファイルを使用してください。
基本的に、ユーザーは入力ファイルの名前を入力できる必要があります。構造体とポインターを使用して、入力ファイル内のムービーのリンク リストを作成しました。次に、リンクされたリストを出力ファイルに出力します。プロットの出力をワード ラップするようにフォーマットします。
出力は次のようになります
***************************************************************************
MOVIE #: 1 Title: Antwone Fisher
---------------------------------------------------------------------------
Year: 2002 Rating: 7
---------------------------------------------------------------------------
Leading Actor: Denzel Washington Genre 1: Biography
Supporting Actor: Derek Luke Genre 2: Drama
---------------------------------------------------------------------------
PLOT:
Antwone Fisher, a young navy man, is forced to see a psychiatrist after a
violent outburst against a fellow crewman. During the course of treatment
a painful past is revealed and a new hope begins.
***************************************************************************
これまでのところ、問題は私の出力であり、出力を表示できません。私はそれをデバッグしようとしましたが、while ループでスタックしていることがわかりました。
ここに私の出力関数があります
void OutputList(MovieDVD *head)
{
ofstream OFile;
OFile.open("OFile.txt");
MovieDVD *dvdPtr;
dvdPtr = head;
cout << "Before While Output " << endl;
while(dvdPtr != NULL)
{
OFile << left;
OFile << dvdPtr -> title;
OFile << dvdPtr -> leadActor;
OFile << dvdPtr -> supportActor;
OFile << setfill('*') << setw(25) << '*' << endl;
OFile << dvdPtr -> genre;
OFile << setfill('*') << setw(25) << '*' << endl;
OFile << dvdPtr -> altGenre;
OFile << setfill('*') << setw(25) << '*' << endl;
OFile << dvdPtr -> year;
OFile << setfill('*') << setw(25) << '*' << endl;
OFile << dvdPtr -> rating;
OFile << setfill('*') << setw(25) << '*' << endl;
OFile << dvdPtr -> synopsis;
OFile << setfill('*') << setw(25) << '*' << endl;
dvdPtr = dvdPtr -> next;
cout << endl;
cout << "READ - AFTER LINE OUTPUT" << endl;
}
cout << " DEBUG -- AFTER WHILE OUTPUT" << endl;
delete dvdPtr;
dvdPtr = NULL;
OFile.close();
}
Here my main function:
//INPUT OUTPUT FILE DECLARATION
ifstream inFile; //INPUT FILE declaration
ofstream OFile; //OUTPUT FILE declaration
//VARIABLE DECLARATION
string inputFileName; //IN - Input file name
string outputFileName; //OUT - Output file name
string synopsis;
MovieDVD *head;
MovieDVD theMovie;
head = NULL;
//INPUT
cout << "What input file would you like to use?: ";
getline(cin, inputFileName);
cout << "DEBUG -- BEFORE CREATELIST "<< endl;
CreateList(head, inputFileName);
cout << "DEBUG -- AFTER CREAETLIST " << endl;
//OUTPUT LIST
cout << "What output file would you like to use?: ";
getline(cin, outputFileName);
OutputList(head);
WordWrap(OFile, head, synopsis);
出力リストにデバッグ用の cout を追加し、
cout << "Before While Output " << endl
出cout << " DEBUG -- AFTER WHILE OUTPUT" << endl
てきて while ループをスキップします。お願い助けて。
マイクリエイティブリスト機能
void CreateList(MovieDVD *head, string inputFileName)
{
ifstream inFile;
inFile.open("inFile.txt");
MovieDVD *dvdPtr;
head = NULL;
dvdPtr = NULL;
dvdPtr = new MovieDVD;
int counter =0;
cout << " DEBUG -- BEFORE WHILE" << endl;
while (inFile && (dvdPtr != NULL))
{
getline(inFile, dvdPtr -> title);
getline(inFile, dvdPtr -> leadActor);
getline(inFile, dvdPtr -> supportActor);
getline(inFile, dvdPtr -> genre);
getline(inFile, dvdPtr -> altGenre);
inFile >> dvdPtr -> year;
inFile >> dvdPtr -> rating;
inFile.ignore(1000, '\n');
getline(inFile, dvdPtr -> synopsis);
dvdPtr -> next = head;
head = dvdPtr;
dvdPtr = new MovieDVD;
cout << "READ line " << counter++ << endl;
}
cout << " DEBUG -- AFTER WHILE" << endl;
delete dvdPtr;
dvdPtr = NULL;
inFile.close();
}