如何使用 Qt 5.7 初始化 stdout stdin
How to initialize stdout stdin with Qt 5.7
我注意到 qDebug() QTextStrean 和一般的 stdin,stdout 想问一下,它实际上是如何工作的,看这个:
THIS WORKS!
方法showmenu() 使用 QTextStream
showMenu(){
QTextStream m_out(stdout);
QTextStream m_in(stdin);
m_out() << "Hey";
}
THIS DOESN'T WORK!
.h
//declaration
public:
QTextStream m_out;
QTextStream m_in;
.cpp
//method showMenu()
showMenu(){
m_out(stdout);
m_in(stdin);
m_out() << "Hey";
}
我注意到,它存在重载问题,因为 qDebug() 也使用标准输出...我说得对吗?
它抛出这个错误:
1>D:..\App_console.cpp(20,15): error : no match for
call to '(QTextStream) (_IO_FILE*&)'
我已经包含了cstdio
会是什么?
C++11 之前,您需要在 构造函数初始化列表 中执行此操作。
在你的 class 的构造函数定义中,比如 MyStreamer
,你可以像这样初始化它:
class MyStreamer{
....
public:
QTextStream m_out;
QTextStream m_in;
};
在您的 .cpp 文件中:
MyStreamer::MyStreamer(...) : m_out(stdout), m_in(stdin) {
....
}
在 C++11 及更高版本中,您可以简单地使用 统一初始化:
class MyStreamer{
....
public:
QTextStream m_out{stdout};
QTextStream m_in{stdin};
};
我注意到 qDebug() QTextStrean 和一般的 stdin,stdout 想问一下,它实际上是如何工作的,看这个:
THIS WORKS!
方法showmenu() 使用 QTextStream
showMenu(){
QTextStream m_out(stdout);
QTextStream m_in(stdin);
m_out() << "Hey";
}
THIS DOESN'T WORK!
.h
//declaration
public:
QTextStream m_out;
QTextStream m_in;
.cpp
//method showMenu()
showMenu(){
m_out(stdout);
m_in(stdin);
m_out() << "Hey";
}
我注意到,它存在重载问题,因为 qDebug() 也使用标准输出...我说得对吗?
它抛出这个错误:
1>D:..\App_console.cpp(20,15): error : no match for call to '(QTextStream) (_IO_FILE*&)'
我已经包含了cstdio
会是什么?
C++11 之前,您需要在 构造函数初始化列表 中执行此操作。
在你的 class 的构造函数定义中,比如 MyStreamer
,你可以像这样初始化它:
class MyStreamer{
....
public:
QTextStream m_out;
QTextStream m_in;
};
在您的 .cpp 文件中:
MyStreamer::MyStreamer(...) : m_out(stdout), m_in(stdin) {
....
}
在 C++11 及更高版本中,您可以简单地使用 统一初始化:
class MyStreamer{
....
public:
QTextStream m_out{stdout};
QTextStream m_in{stdin};
};