在c++类中重载全局函数getline
Overloading global function getline in a c++ class
我正在做一个学校项目,实现一个多项式的c++类。我的类应该做的是从标准文件或文件中读取多项式。我一直在考虑重载>>,直到我在我最喜欢的c++参考网站上读到以下内容:
请注意,istream提取操作使用空白作为分隔符,因此这个操作只会提取可能的考虑溪流中的一个词。要提取整行文本,参考全局函数getline的字符串重载。
这让我所有的灵感重载全局函数getline为我的多项式类,以便它可以读取整行从一个文件。有很多教程和文章描述了如何重载流提取操作符,但我找不到关于getline的任何细节。我应该随意重载它吗?从参考资料来看,似乎是这样做的。
在我见过的一些重载getline函数中(比如在链接到的页面底部),我注意到它们返回类似"basic_istream"的东西。我只返回istream就够了吗?那么"char_type"呢?炭够吗?
基本上我想知道:这是一个任何东西会过载,或者有一些挑剔的细节,我应该担心?
这是我做的标题:
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;
}
谢谢!
您仍然应该重载operator >>
。在您的操作符实现中,您可以根据需要提取尽可能多的"单词"(我假设每个系数大约一个单词)。
getline
,那是关于获得一行而不是Polynomial
。
相关文章:
- 全局函数参数
- 如何定义全局函数指针并分配给特定地址
- 为什么全局函数 void showA(A&x) 能够访问 A 类的私有成员?
- 为什么链接器报告全局函数的乘法定义符号,而不是类静态方法
- CUDA 全局函数未正确添加某些索引的数组值
- Qt - 定义 QML 的全局函数
- 如何在全局函数中访问链表的头部和尾部
- 如何在 c++ 中的全局函数中调用类的对象
- 类方法和全局函数中的别名
- 在C 中将全局函数包括在命名空间中
- 用于定义全局函数"using namespace"
- 为什么在 2 个不同的 cpp 文件中定义内联全局函数会导致神奇的结果
- 使用 lambda 和全局函数调用 ranges::for_each
- Djinni 能否从C++全局函数中生成必要的代码
- 当在Python中定义__str__时,如何将C 的标准全局函数覆盖
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- 为什么我不能在头文件中定义全局函数
- 为什么 std::get<T> for 'variant' 是一个全局函数?
- 从C源文件调用C++源文件中定义的全局函数
- 是否可以通过引用将方法从类传递到全局函数或在类之间传递?