栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Qt QDebug打印自定义对象、包括标准输入输出stdout、stdin

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt QDebug打印自定义对象、包括标准输入输出stdout、stdin

1. 标准输入输出 类定义

关于标准输入输出我们知道, 在类添加如下代码即可,需要访问私有变量则加上友元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"
#include 

int main() 
{
	MyClass m;
	std::cin >> m;
	std::cout< 

此时输入参数 : 帅哥 18
输出: name: 帅哥, age: 18

2. Qt 定义

使用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;
}
  1. 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;

问题点

  1. 项目文件.pro 没有ConFIG += console需要加上, 不然显示不了终端

参考文章:
https://www.cnblogs.com/chinasoft/p/15251509.html
https://www.cnblogs.com/weizhixiang/p/6198643.html
Qt 文档

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297382.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号