发布网友 发布时间:2022-04-25 21:01
共2个回答
热心网友 时间:2023-10-15 04:57
//主要是用到QTextStream的setCodec()函数
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
in.setCodec("unicode");
while (!in.atEnd())
{
QString line = in.readLine();
//进行相关处理
}追问你这个是读取勒 我需要写入 而且 写入的时候用这种方式写出来的东西是有问题的 我测试过
追答我刚才测试了,很遗憾,达不到你的要求。尝试了unicode编码,写入文件总是乱码。只有用gb18030 才不会写入文件乱码。 下面是代码,或许对你来说没啥用。
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb18030"));
QLabel textLabel;
QFile file("in.txt");
if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
{
qDebug()<<"open file failure!!!!";
}
QTextStream out(&file);
// out.setCodec("unicode");
QString text ("中文文本写入测试");
// out << text.unicode();
out<<text;
out.seek(0);
while (!out.atEnd())
{
QString line = out.readLine();
//进行相关处理
textLabel.setText(line);
}
textLabel.show();
return a.exec();
}
热心网友 时间:2023-10-15 04:58
qfile写出的时候你设置一下编码方式,输出的时候API里面有选项,你去仔细看看qfile的API追问qfile 没得编码设置的 我找过了 。。。没有setCodec 或者setEncoding之类的函数
追答那就按照楼下的方法试试,一行一行的处理,实在不得行就一个个字符的处理,