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文字が含まれていても問題ありません。