qDebug用法及中文乱码解决

我们可以使用qDebug像使用std::cout一样,直接在重定向操作符(<<)后面加上我们的字符串即可。 qDebug()还可以打印Qt中的基本类型,例如QString,QByteArray,QDate,QRectF,QVariantHash,QFont等等

#include <QDebug>
qDebug()<<"hello"<<endl;

qDebug用于在控制台输出调试信息,主要有以下几种用法。

1、类似c++的cout函数

QString str="world";

qDebug()<<"hello "<<str<<"!"<<endl;

注:此处endl起到的作用有两个:

a、等同于\n换行

b、刷新缓冲区,将缓冲区数据写入文件或屏幕,因此会影响程序效率。

endl等价于"/n"+flush();

2、构造函数直接引入参数

-字符串拼接

例2.1:QString str="world!";

qDebug("hello "+str);

-类似mfc中CString的format函数

int year=18;

qDebug("今年我%d",year);

注:
%a,%A 读入一个浮点值(仅C99有效)    
%c 读入一个字符    
%d 读入十进制整数    
%i 读入十进制,八进制,十六进制整数    
%o 读入八进制整数    
%x,%X 读入十六进制整数   
%s 读入一个字符串,遇空格、制表符或换行符结束。    
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。    
%p 读入一个指针    
%u 读入一个无符号十进制整数   
%n 至此已读入值的等价字符数    
%[] 扫描字符集合    
%% 读%符号

QT qt5使用qdebug()输出中文 乱码

注:QString 是Unicode编码方式。

#include<QDebug>
LPCWSTR str_lpc = "中文";
QString str = "中文";
qDebug() << QString::fromWCharArray(str_lpc);  //乱码
qDebug() << QString::fromWCharArray(str_lpc).toStdString().c_str();   //正确输出中文
qDebug() << str;   //乱码
qDebug() << str.toStdString().c_str();   //正确输出中文
qt中qDebug()无法输出解决办法

在调试qt程序,无论是debug版本还是release版本,都会遇到此类问题,先将其总结在此。

现象描述:

无论是头文件还是源文件中都有#include <qdebug.h>

程序中qdebug()<<的使用方法都正确

却在输出窗口中无法看到输出的信息。

解决办法:

1.在工程文件.pro的最后添加:CONFIG += console

2.如果你的工程文件中又包含多个工程文件,那么你需要在那几个工程文件最后也添加CONFIG += console

3.将工程文件编译过的文件清除:make clean,或者在QT ide中:构建-》清理项目xxx

4.执行qmake

5.重新编译XXX项目

6.在需要用的头文件或者,源文件中#include

7.在源文件中添加qdebug()<<“”;使用

8.如果此时出现的现象时:在正常编译运行后,qdebug()无法输出信息,而当程序正常关闭后,在输出窗口上看到输出信息

那么,你需要做的是:

在terminal中查看输出信息!

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注