Qt命令行中使用cout,cin,cerr

cout,cin,cerr是C++标准输入输出库函数,很多使用标准库的程序使用上述函数输出。本文记录一种在Qt中定义函数的方法,在某些情况下,可以很方便的导入第三方标准库撰写的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**********************************************************************************
*说明:
* 如果使用cout对Qt库进行操作,可创建QTextStream对象进行,如下演示
* 对于Qt 5.x版本,源文件必须使用UTF-8以避免乱码
*       如果不使用Qt库的QTextStream对象进行输出,而使用std::cout输出中文,
*       那么由于Windows蛋疼的页面文件机制,源文件必须使用ANSI编码,
*   不足:
*       cout一个QString对象之后,默认是不直接输出的,需要等到cout的缓冲区满之后,
*       才向终端输出内部的字符串;
*   解决:
* 如果希望cout之后立即进行输出,可以在输出之后再输出一个endl,
* 或调用QTextStream的内部方法flush,强制清空缓冲区。
***********************************************************************************/


#include <iostream>
#include <QString>
#include <QTextStream>
#include <QDateTime> 


int main()
{
QTextStream cin(stdin,  QIODevice::ReadOnly);
QTextStream cout(stdout,  QIODevice::WriteOnly);
QTextStream cerr(stderr,  QIODevice::WriteOnly);

QString str = "hello world!";

cout<<str<<endl;
cout<<(QString("当前日期:%1")).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd"))<<endl;
cout<<(QString("当前时间:%1")).arg(QDateTime::currentDateTime().toString("hh:mm:ss"))<<endl;

cout.setFieldWidth(5);
    for (int i=0;i<225 ;i++ ){
cout<<i;
if((i+1)%15==0)
cout<<endl;
}

cout<<endl;
cout.setFieldWidth(0);

return 0;

}

本文来自:Qt命令行中使用cout,cin,cerr