如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
How to delete the book that have been input and how to make the title, language, and name doesn't error if we put space on it?
谁能帮我制作一个新菜单来删除所有已输入的书籍?以及如何使标题,名称和语言可以用空格输入? 我已经搜索了有关它的其他问题,其中许多使用getline。但是我不明白如何在这样的课堂上使用它。
(对不起,我的语法不好,我的英语不是很好(
这是我制作的源代码。
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class Book {
int number, year;
string language, name, title;
Book * head, * next;
public:
Book (string & name, string & title, int number, string & language, int year) {
head = NULL;
this -> name = name;
this -> title = title;
this -> language = language;
this -> number = number;
this -> year = year;
};
~ Book (void) {
delete head;
};
void display (void);
void add (void);
void dellete (string&);
};
void Book :: add (void) {
string name, title, language;
int year, number;
cout << endl << "Author:", cin >> name;
cout << "Title:", cin >> title;
cout << "Number of books:", cin >> number;
cout << "Language:", cin >> language;
cout << "Year of publication:", cin >> year;
Book * p = new Book (name, title, number, language, year);
p -> next = head;
head = p;
}
void Book :: display (void) {
Book * p = head;
while (p) {
cout << "----------------------------- n";
cout << "Author:" << p -> name << endl;
cout << "Title:" << p -> title << endl;
cout << "Number of books:" << p -> number << endl;
cout << "Language:" << p -> language << endl;
cout << "Year of publication:" << p -> year << endl;
cout << endl;
p = p -> next;
}
}
int main (int argc, char const ** argv) {
string blank = "";
Book * B = new Book (blank, blank, false, blank, 0);
int opt;
cout << "nBOOK STACKS n";
for (;;) {
cout << "1) Add a book.n";
cout << "2) Show all books.n";
cout << "3) Exit. nn";
cout << "Options:", cin >> opt;
switch (opt) {
case 1:
B -> add ();
break;
case 2:
B -> display ();
break;
case 3:
exit (0);
default:
continue;
}
}
return 0;
}
请帮助我获取代码,因为这是我的中期测试任务,我仍然是编程的初学者。谢谢。
如果要每行输入数据,下面是一个示例:
class Book
{
int number;
int year;
std::string language
std::string name;
std::string title;
public:
friend std::istream& operator>>(std::istream& input, Book& b);
//...
};
std::istream& operator>>(std::istream& input, Book& b)
{
std::string text_line;
std::getline(input, text_line);
std::istringstream text_stream(text_line);
text_stream >> b.number >> b.year >> b.language >> b.name >> b.title;
return input;
}
如果每个数据项都在单独的行上,则可以将operator>>
更改为:
std::istream& operator>>(std::istream& input, Book& b)
{
input >> b.number;
input >> b.year;
std::getline(input, b.language);
std::getline(input, b.name);
std::getline(input, b.title);
return input;
}
来自文件的示例输入:
std::vector<Book> library;
Book b;
while (data_file >> b)
{
library.push_back(b);
}
相关文章:
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- C++ constexpr语言 - 可以在编译时评估值吗?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 我是否需要在单语言 UWP 应用中create_async?
- 如果不允许使用constexpr,为什么sfinae在上面
- 我可以使用功能指针在编程语言边界上调用函数
- 用qpainter在上面绘画时,请确定哪些Qimage更改
- 在.NET语言之间共享类方法
- 返回在各种语言的函数中创建的数组和对象
- 在编程语言中扩展预增量运算符
- 如何用我的代码编译两个类似的头文件,以便在上面运行2个DLL
- 如何在编程语言中表示二进制字段
- 在静态语言中分离和合并由数据库表组成的对象
- 如何在跨语言的多个应用程序之间建立通信
- 在自制语言中插入c++代码并用llvm-3.2编译
- 如何在混合语言应用程序中创建堆
- 平方根在c++编程语言
- C/ c++中定义的操作符在哪里,它们在这些语言中是如何实现的
- 在非西方语言中使用UTF-8而不是wchar_t有什么不便之处?
- Opencv:创建一个黑色窗口并在上面写文字