c++ - 在C++中返回IO对象的目的是什么?

标签 c++ input io output

我试图通过阅读一本教科书并做练习题和练习来教自己C++,而我目前正在学习的主题对我来说有点令人困惑,我希望得到一些澄清。我已经在网上寻找问题的明确答案,但是还没有找到任何东西。

目前,我正在标准库中学习IO类的详细信息,而我现在所在的部分将提供一些示例,这些示例具有传递和返回IO对象的函数。

例如:

istream &get_value(istream &input)
{
    int value;
    input >> value;

    return input;
}

int main()
{
    get_value(cin);
    return 0;
}

我从较高的 Angular 了解这里发生了什么。 get_value函数具有对输入对象类型的引用,并且还具有对输入对象的引用,在我的示例中,我曾经使用过常用的cin对象。我知道此函数正在从控制台中读取用户的输入,并将该输入存储为value

我不明白的是返回输入对象的原因是什么。 为什么此函数不应具有void类型? 我正在使用的输入对象有什么用途?我知道我现在没有将其用于任何用途,但是它有什么用途?

最佳答案

返回值是这样,您可以在流运算符<<>>之间“链接”调用。运算符(operator)重载是这种“链接”的良好动机。

using namespace std;
class book {
    string title;
    string author;
public:
    book(string t, string a) : title(t), author(a) { }
    friend ostream &operator<<(ostream &os, const book &x);
}

ostream &operator<<(ostream &os, const book &x)
{
    os << x.title << " by " << x.author << "\n";
    return os;
}

int main()
{
    book b1 { "Around the World in 80 Days", "Jules Verne" };
    book b2 { "The C Programming Language", "Dennis Ritchie" };

    cout << b1 << b2; // chaining of operator<<
}

如果operator <<没有返回ostream,我们将无法将修改后的ostream从第一个operator <<传递给第二个。相反,我们将不得不写
cout << b1;
cout << b2;

同样的情况也适用于使用>>的输入操作

关于c++ - 在C++中返回IO对象的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491527/

相关文章:

c++ - 查找行尾位置的有效方法

c++ - 用于将容器累积到字符串中的标准算法,其中分隔符分隔条目?

c++ - 静态数组的大小

java - box2d 主体特定区域上的触摸事件

c - 如何对输入进行验证?数字或字母..C 编程

JQuery 输入[type=date] 选择器

C++ 编译器无法在安装了 Visual Studio 和代码块的 cmd 中工作

java - 如何优雅地检查原始资源是否不存在?

linux - jbd2/sda2-8 的高 io 使用率

android - 将 MS Word 文件从 Android 上传到 .Net WCF?