我完成了如何加载图书信息的操作。 但是加载后,我不知道如何区分每个功能。我的解释太糟糕了……这是代码。
这是文本文件。 第一个词是定界符。 a是普通书,b是杂志,c是漫画书。
b japji maxin 1 2 1
b winage cosmetic 12345 67 2
c onepice oda 12456 123 1
a ilban 1 2 3
c naruto mola 6789 47 1
这是load.cpp
string loadfile;
ifstream openfile{"All_in_Book.txt"};
if(!openfile) {
cout << "파일을 찾을수 없습니다." << endl;
}
else {
string tmpbookname, tmpauthor, tmpisbn, tmppage, tmpissue, tmpcompare;
string ilban="a", japji="b", comic="c";
int counter = 0;
while(true) {
openfile >> tmpcompare >> tmpbookname >> tmpauthor >> tmpisbn >> tmppage >> tmpissue;
if(ilban.compare(tmpcompare))
book.push_back(new Book(tmpbookname, tmpauthor, tmpisbn, tmppage));
if(japji.compare(tmpcompare))
book.push_back(new Magazine(tmpbookname, tmpauthor, tmpisbn, tmppage, tmpissue));
if(comic.compare(tmpcompare))
book.push_back(new ComicBook(tmpbookname, tmpauthor, tmpisbn, tmppage, tmpissue));
if(openfile.eof()) {
cout << "총" << counter << "개의 도서 데이터를 불러왔습니다." << endl; // tell us how many book loaded.
cout << "아무키나 누르면 종료됩니다." << endl;
getchar();
break;
}
counter++;
}
}
}
这是输出。
---일반책의 정보를 출력합니다.---
책 이름 : japji
책 출판사 : maxin
책 ISBN: 1
책 페이지: 2
책 호: :
---만화책의 정보를 출력합니다.---
만화책 이름 : japji
만화책 작가 : maxin
만화책 ISBN: 1
만화책 페이지: 2
만화책 호 : 1
---일반책의 정보를 출력합니다.---
책 이름 : winage
책 출판사 : cosmetic
책 ISBN: 12345
책 페이지: 67
책 호: :
---만화책의 정보를 출력합니다.---
만화책 이름 : winage
만화책 작가 : cosmetic
만화책 ISBN: 12345
만화책 페이지: 67
만화책 호 : 2
---일반책의 정보를 출력합니다.---
책 이름 : onepice
책 출판사 : oda
책 ISBN: 12456
책 페이지: 123
책 호: :
---잡지책의 정보를 출력합니다.---
잡지책 이름 : onepice
잡지책 출판사 : oda
잡지책 ISBN: 12456
잡지책 페이지: 123
잡지책 호 : 1
---잡지책의 정보를 출력합니다.---
잡지책 이름 : ilban
잡지책 출판사 : 1
잡지책 ISBN: 2
잡지책 페이지: 3
잡지책 호 : c
---만화책의 정보를 출력합니다.---
만화책 이름 : ilban
만화책 작가 : 1
만화책 ISBN: 2
만화책 페이지: 3
만화책 호 : c
---일반책의 정보를 출력합니다.---
책 이름 : mola
책 출판사 : 6789
책 ISBN: 47
책 페이지: 1
책 호: :
---잡지책의 정보를 출력합니다.---
잡지책 이름 : mola
잡지책 출판사 : 6789
잡지책 ISBN: 47
잡지책 페이지: 1
잡지책 호 : c
---만화책의 정보를 출력합니다.---
만화책 이름 : mola
만화책 작가 : 6789
만화책 ISBN: 47
만화책 페이지: 1
만화책 호 : c
这是searchbootk函数。
void Handler::SearchBookInfo(vector<Book*>& book) { // 한 책당 모든 경우의 수가 나와버림.(모두 통일?)
for (int i = 0; i < book.size(); i++) {
book[i]->ShowBookInfo();
cout << endl;
}
}
所有ShowBookInfo功能都是虚拟的。
#include "Book.h"
#include <iostream>
Book::Book(string book_name, string author, string isbn, string page)
{
Book_name = book_name;
Author = author;
ISBN = isbn;
PAGE = page;
}
void Book::ShowBookInfo() const {
cout << "---일반책의 정보를 출력합니다.---" << endl;
cout << "책 이름 : " << Book_name << endl;
cout << "책 출판사 : " << Author << endl;
cout << "책 ISBN: " << ISBN << endl;
cout << "책 페이지: " << PAGE << endl;
cout << "책 호: : " << ISSUE << endl;
}
string Book::GetBookName() const {
return Book_name;
}
Magazine::Magazine(string book_name, string author, string isbn, string page, string Magazine_issue): Book(book_name, author, isbn, page) {
ISSUE = Magazine_issue;
} // 얕은 복사
void Magazine::ShowBookInfo() const {
cout << "---잡지책의 정보를 출력합니다.---" << endl;
cout << "잡지책 이름 : " << Book_name << endl;
cout << "잡지책 출판사 : " << Author << endl;
cout << "잡지책 ISBN: " << ISBN << endl;
cout << "잡지책 페이지: " << PAGE << endl;
cout << "잡지책 호 : " << ISSUE << endl;
}
string Magazine::GetBookName() const {
return Book_name;
}
ComicBook::ComicBook(string book_name, string author, string isbn, string page, string Comic_issue) : Book(book_name, author, isbn, page) {
ISSUE = Comic_issue;
}
void ComicBook::ShowBookInfo() const {
cout << "---만화책의 정보를 출력합니다.---" << endl;
cout << "만화책 이름 : " << Book_name << endl;
cout << "만화책 작가 : " << Author << endl;
cout << "만화책 ISBN: " << ISBN << endl;
cout << "만화책 페이지: " << PAGE << endl;
cout << "만화책 호 : " << ISSUE << endl;
}
string ComicBook::GetBookName() const {
return Book_name;
}
文本文件内容仅为5。2杂志,2漫画书,1一般书 但是当我调用SearchBookInfo时,它显示的确很奇怪...
我想要的结果是
b(magazine showinfo)
b(magazine showinfo)
c(comic showinfo)
a(general showinfo)
c(comic showinfo)
我该如何解决这个问题?