关于标准输入输出我们知道, 在类添加如下代码即可,需要访问私有变量则加上友元friend 在函数前
std::istream& operator>>(std::istream&, MyClass&); std::ostream& operator<<(std::ostream&, const MyClass&);
需要访问私有变量
friend std::istream& operator>>(std::istream&, MyClass&); friend std::ostream& operator<<(std::ostream&, const MyClass&);
完整类实现代码
myclass.h
#include使用示例代码#include class MyClass { friend std::istream& operator>>(std::istream&, MyClass&); friend std::ostream& operator<<(std::ostream&, const MyClass&); public: MyClass() { } ~MyClass() {} private: int age; std::string name; }; std::istream& operator>>(std::istream& in, MyClass& m) { in >> m.name >> m.age; } std::ostream& operator<<(std::ostream& out, const MyClass& m) { out << "name: " << m.name << ", age: " << m.age; }
#include "myclass.h" #includeint main() { MyClass m; std::cin >> m; std::cout< 此时输入参数 : 帅哥 18
2. Qt 定义
输出: name: 帅哥, age: 18使用Qt帮助文档代码, 像1中标准输入输出定义代码中一样, 加入下述定义的友元函数声明
QDebug operator<<(QDebug debug, const MyClass &c) { QDebugStateSaver saver(debug); debug.noquote() << "name: " << QString::fromStdString(m.name) << ", age: " << m.age; return debug; }使用代码
int main() { MyClass m; qDebug() << m; }
- Qt 终端中的输入输出
QTextStream in(stdin); QTextStream out(stdout); class MyClass { friend QTextStream& operator<<(QTextStream &, const MyClass &); friend QTextStream& operator>>(QTextStream &, MyClass &); public: MyClass() : name(""), age(0) {} ~MyClass() { } private: std::string name; int age; }; QTextStream& operator<<(QTextStream &out, const MyClass &m) { out << "name: " << m.name << ", age: " << m.age; return out; } QTextStream& operator>>(QTextStream &in, MyClass &m) { QString name; in >> name >> m.age; m.name = name.toStdString(); return in; } QTextStream in(stdin); QTextStream out(stdout); MyClass m; in >> m; out << m << endl;问题点
- 项目文件.pro 没有ConFIG += console需要加上, 不然显示不了终端
参考文章:
https://www.cnblogs.com/chinasoft/p/15251509.html
https://www.cnblogs.com/weizhixiang/p/6198643.html
Qt 文档



