1

特殊文字を含む QString を const char* に変換しようとしていますが、成功しませんでした。私の機能は次のとおりです。

void class::func(const QString& Name) // fileName = "â.tmp" 
{ 
  qDebug()<< Name; // display "â.tmp"
  const char* cfileName = Name.toAscii().data();
  qDebug() << cfileName;  // display "a?.tmp" 
}

qDebug()<< fileName は「â.tmp」という真の値を表示しますが、それを const a char* に変換した後、正しい値を取得できません。

2 回目に const char* cfileName = QString::fromUtf8(fileName.toAscii().data()); を使用しようとしました。しかし、私はまだ正しい値を持っていませんでした.それは同じことを表示します: "a?.tmp". どうすればこれを修正できますか ありがとう

4

2 に答える 2

1

QString を const char* に変換するため:

QString str("hi lor!");
const char *s = str.toStdString().c_str();
msg.setText(QString::fromUtf8(s));
msg.exec();
于 2014-11-04T14:53:05.107 に答える
0

編集:使用するQByteArray QString::toUtf8 () const方がはるかに優れています

QString string = "â.tmp";
const char* encodedString = string.toUtf8().data();

オリジナル:

おそらくコーデックを使用する必要があります。http: //qt-project.org/doc/qt-4.8/qtextcodec.htmlを参照してください。

このようなものはうまくいくはずです:

QString string = "â.tmp";
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QByteArray encodedString = codec->fromUnicode(string);

ドキュメントには、QDebug & QDebug::operator<< ( const char * s ) がサポートするエンコーディング タイプは記載されていません。プラットフォームに依存する可能性があります。別の正しい変換を確認してみてください。問題は、qDebug() または書き込み先のストリームにある可能性があります。

于 2012-12-13T14:32:20.457 に答える