Qt如何把QString写入txt文件中
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()),如果输入中文则会出现类似于????????????????乱码的情况:
//写入文件
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();
}
/*************************************
Qt中QString与QByteArray互相转化方法
// QString转QByteArray方法
//Qt5.9.6
QString str("Hello World");
QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1
QString str("Hello World");
QByteArray bytes = str.toLatin1(); // QString转QByteArray方法2
//QByteArray转QString方法
//Qt5.9.6
QByteArray bytes("Hello World");
QString str = bytes; // QByteArray转QString方法1
QByteArray bytes("Hello World");
QString str;
str.prepend(bytes); // QByteArray转QString方法2
qDebug() << string;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)