【发布时间】:2011-10-22 00:42:37
【问题描述】:
我正在开展一个学校项目,以实现多项式的 c++ 类。我的班级应该做的事情是从标准中或从文件中读取多项式。我考虑过重载>>,直到我在favorite c++ reference site 上阅读以下内容:
请注意,istream 提取操作使用空格作为 分隔符,因此此操作只会提取可以 被认为是流中的一个词。要提取整行文本, 参考全局函数getline的字符串重载。
这激发了我为多项式类重载全局函数 getline 的灵感,以便它可以从文件中读取整行。有很多教程和文章描述了如何重载流提取运算符,但我找不到有关 getline 的任何详细信息。我应该随心所欲地超载它吗?从参考资料来看,这似乎是它的完成方式。
在我见过的一些重载的 getline 函数中(例如在链接到的页面底部),我注意到它们返回类似“basic_istream”的内容。我只返回 istream 就足够了吗?那么“char_type”呢? char 就够了吗?
基本上我想知道:这是其中一个超载的东西,还是我应该担心一些挑剔的细节?
这是我制作的标题:
class Polynomial {
public:
friend istream& getline(istream& is, Polynomial & poly);
friend istream& getline(istream& is, Polynomial & poly, char delim);
};
friend istream& getline(istream& is, Polynomial & poly) {
return getline(is, poly, '\n');
}
friend istream& getline(istream& is, Polynomial & poly, char delim) {
// read enough tokens to make a term
// stop when we get to the delimiter
return is;
}
谢谢!
【问题讨论】:
-
你为什么要故意写一个目的与它的名字不匹配的函数?
标签: c++ operator-overloading getline