gpt4 book ai didi

c++ - 这些IO功能可以换种方式完成吗?

转载 作者:行者123 更新时间:2023-11-28 07:21:05 32 4
gpt4 key购买 nike

因此,我正在使用 C++ Primer,第 5 版。我在第 7.1.3 节,但由于很多人没有这本书,所以这里是它的底线:作者正在为图书交易类编写代码,并希望实现一个读取和打印功能以分别获取在一本书的数据中,然后打印它。以下是本书的功能:

// input transactions contain ISBN, number of copies sold, and sales price
istream &read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}

ostream &print(ostream &os, const Sales_data &item)
{
os <<item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price();
return os;
}

让我有点困惑的是,为什么他们会陷入实际传递 IO 对象的麻烦之中。如果让我自己写这样一个函数,我会这样做:

void read()
{
cout << "Please input book number, units sold and price.";
cin >> item.bookNo >> item.units_sold >> price;
}

void print()
{
cout << item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price();
}

(item.isbn() 是一个返回书的 ISBN 的函数)

当然,我不是经验丰富的编程人员,而他们是,所以额外的复杂性背后一定有原因,或者只是我的方式是糟糕的编程习惯。你怎么看?

(请记住,在我和本书的代码中,都假定正确使用了 header 和声明/定义。)

最佳答案

书中的示例适用于 ostreamofstream 等,因此您可以使用 cout 以及任何打开的文件.

更好的方法可能是在运算符<<和运算符>>处实现,这样您就可以直接对对象使用该语法。

另一方面,您的示例仅适用于 cincout,因此如果您决定需要输出到文件,则需要更改您的实现或添加另一个函数来执行此操作。

关于c++ - 这些IO功能可以换种方式完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467114/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com