【Qt】QStringとstd::stringの変換

Qtで使える文字列クラスとしてQStringと、C++で使われる文字列クラスのstd::stringがあります。両方とも文字列クラスですが、別物なので、そのままは使う事は出来ないので変換が必要になります。

QString ⇒ std::stringの変換は、やり方によっては文字化けする事があるので注意です

QString ⇒ std::string

LineEdit等のUIから入力された値を取得して、std::stringの変数に入れたい場合等に活躍します。

toStdString使用 (ひらがな・漢字等の2byte文字を含まない場合)

「QString.toStdString()」でQStringをstd::stringに変換します。

QString q_str = ui->lineEdit->text();
std::string str = q_str.toStdString();

ひらがな・漢字等の2byte文字を含む場合は、文字化けするので注意!

toLocal8bit使用 (ひらがな・漢字等を含む場合)

「QString.toLocal8Bit().constData()」でQStringをstd::stringに変換します。

QString q_str = ui->lineEdit->text();
std::string str = q_str.toLocal8Bit().constData();

ひらがな・漢字が含まれる場合は、toLocal8Bit().constData()を使おう

  

std::string ⇒ QString

「QString::fromStdString()」でstd::stringをQStringに変換します。

std::string str = "aaaだだだだだ";
QString q_str = QString::fromStdString(str);

こちらは、ひらがな・漢字等の2byte文字が含まれていても問題ありません。

    

QStringと数値の変換は以下の記事を参照してください。

スポンサーリンク

  • この記事を書いた人

まさじぃ

ダメプログラマ歴17年です。 プログラミング関連の事や、 自分で使って良かったもの等の紹介をメインにやっています。

-プログラミング
-,