gpt4 book ai didi

c++ - 外部日志文件为 UTF8 并带有\r\n

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:53 25 4
gpt4 key购买 nike

我有这个代码:

    void myMessageHandler(QtMsgType type, const QMessageLogContext &, const QString & msg)
{
QTime time = QTime::currentTime();
QString formattedTime = time.toString("hh:mm:ss");
QByteArray formattedTimeMsg = formattedTime.toLocal8Bit();

QString txt;
switch (type) {
case QtDebugMsg:
txt = QString("%1: Debug: %2").arg(formattedTime, msg);
break;
case QtWarningMsg:
txt = QString("%1: Warning: %2").arg(formattedTime, msg);
break;
case QtCriticalMsg:
txt = QString("%1: Critical: %2").arg(formattedTime, msg);
break;
case QtFatalMsg:
txt = QString("%1: Fatal: %2").arg(formattedTime, msg);
break;
}
QFile outFile("debug.log");
outFile.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream ts(&outFile);
ts << txt << endl;
}

将所有控制台日志保存到外部文件 debug.log 中效果很好。但是我不知道如何设置它以将文件格式化为UTF8,因为打开文件时无法正确读取我的某些本地特殊字符。还有我如何在每条记录后换行?全部在一行中取决于我打开日志文件的应用程序 - 记事本不会显示新行, Notepad++ 会,写字板也不...)

非常感谢你们的帮助!

最佳答案

两者都可以通过配置文本流来实现:

  1. 当流以文本形式打开时,行尾终止符将在 Windows 上转换为 "\r\n":QTextStream ts(&outFile, QIODevice::Text);
  2. 设置编解码器写入 UTF-8:ts.setCodec("UTF-8");

QTexStream 的文档非常好:https://doc.qt.io/qt-5/qtextstream.html

关于c++ - 外部日志文件为 UTF8 并带有\r\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56875199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com