QtはどのようにQStringをtxtファイルに書きます


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