QtはどのようにQStringをtxtファイルに書きます
文書ディレクトリ模範コード 1模範コード
writeはQStringを直接ファイルに書き込むことができないため、2つの方法があります.1 QTextStreamクラス(中国語と英語で保存可能) を使用2 QStringをQByteArrayに変更 英語で次の方法を選択した場合(toLatin 1())、中国語を入力すると
writeはQStringを直接ファイルに書き込むことができないため、2つの方法があります.
//
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<<"
";
file.close();
}
????????????????
のような文字化けしが発生します://
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();
}