您的位置:首页 > 编程语言 > Qt开发

Qt控制台输出QString

2012-06-12 14:42 423 查看
有时候想在控制台输出我们想要的QString变量。

1、qDebug可以实现在控制台终端打印,但我们还是想使用C++中的std::cout<<variable

This function does nothing if QT_NO_DEBUG_OUTPUT was defined during compilation.

2、网上说的方法利用QTextStream:

Cpp代码







#include <QTextStream> 

QTextStream cin(stdin, QIODevice::ReadOnly); 
QTextStream cout(stdout, QIODevice::WriteOnly); 
QTextStream cerr(stderr, QIODevice::WriteOnly); 
QString st("hello world"); 
cout <<str<<endl;//必须加endl才能输出 

cin>>str;//输入 
cout <<str; 
cout.flush();//或者加cout.flush()才能输出 

#include <QTextStream>
QTextStream cin(stdin, QIODevice::ReadOnly);
QTextStream cout(stdout, QIODevice::WriteOnly);
QTextStream cerr(stderr, QIODevice::WriteOnly);
QString st("hello world");
cout <<str<<endl;//必须加endl才能输出
cin>>str;//输入
cout <<str;
cout.flush();//或者加cout.flush()才能输出

这样的cin、cout、 cerr和我们在传统C++遇到的有一点不同,那就是你cout了一个QString之后,默认是不直接输出的,一般需要等到cout的缓冲区满之后,才 向终端输出内部的字符串;如果你想在cout之后马上看到输出的内容,可以在输出之后在输出一个endl,或者调用cout的内部方法flush,强制情 况缓冲区

3、我们还是习惯用C++的 #include<iostream>中的std::cout,这个时候QString类型需要转换成Char *

Cpp代码







#include <iostream> 
QString str("hello,world"); 
QByteArray ba(str.toAscii());//toAscii()返回一个QByteArray类型 
std::cout << ba.data();//data()返回char * 
//其它类型变量还是可以照常输出的。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息