Qt如何把QString写入txt文件中
程序员文章站
2022-03-31 19:15:09
...
文章目录
1 示范代码
由于write不能把QString直接写入文件中,因此有两种方法来处理:
- 1 使用QTextStream类(中英文都可以存)
//读入文件
QFile file;
file.setFileName("C:/Users/Admin/Desktop/data2/1.txt");
QByteArray data;
if(file.open(QIODevice::ReadOnly)){
data = file.readAll();
file.close();
}
//转换为16进制的QString(不需要)
QString res ="";
QString temp = data.toHex().toUpper();
for(int i = 0;i < temp.size(); i += 2){
res += "0x" + temp.mid(i, 2) + ",";
}
//写入文件【重点】
file.setFileName("C:/Users/Admin/Desktop/data2/3.txt");
if(file.open(QIODevice::WriteOnly |QIODevice::Text)){
QTextStream stream(&file);
stream<<res<<"\n";
file.close();
}
- 2 把QString转为QByteArray
- 如果是英文选择下面的方法(toLatin1()),如果输入中文则会出现类似于
????????????????
乱码的情况:
- 如果是英文选择下面的方法(toLatin1()),如果输入中文则会出现类似于
//写入文件
file.setFileName("C:/Users/Admin/Desktop/data2/4.txt");
if(file.open(QIODevice::WriteOnly )){
QByteArray res2 = res.toLatin1();//toLatin1()转为QByteArray
file.write(res2);
file.close();
}
- 如果是中文使用(toUtf8());
file.setFileName("C:/Users/Admin/Desktop/data2/5.txt");
if(file.open(QIODevice::WriteOnly )){
QByteArray res2 = res.toUtf8();//toLatin1()转为QByteArray
file.write(res2);
file.close();
}
- 或者是转为string,然后再把string转为char*:
file.setFileName("C:/Users/Admin/Desktop/data2/6.txt");
if(file.open(QIODevice::WriteOnly )){
std::string res2 = res.toStdString();//string
const char* res3 = res2.c_str();//char*
file.write(res3);
file.close();
}
推荐阅读