将QString转换为字符

问题描述 投票:0回答:1

我有此代码段:

QString nomEntr, prenomEntr, numEntr, ramqEntr, jourEntr, moisEntr, anEntr, sexeEntr;
// ...
std::string nomEntrStr = nomEntr.toLocal8Bit().constData();
std::string prenomEntrStr = prenomEntr.toLocal8Bit().constData();
std::string ramqEntrStr = ramqEntr.toLocal8Bit().constData();
std::string numEntrStr = numEntr.toLocal8Bit().constData();
std::string sexeEntrStr = sexeEntr.toLocal8Bit().constData();

dates.push_back( util::Date(jourEntrlong, moisEntrlong, anEntrlong));
Entraineurs.push_back(hockey::Entraineur(nomEntrStr, prenomEntrStr, dates.back(), 
    numEntrStr, ramqEntrStr, sexeEntrStr));

事实是,传递给sexeEntrStr的最后一个参数hockey::Entraineur必须是char。因此,我必须将其从QString转换为char或将QString转换为std::string,然后将其转换为char

老实说,我都不知道该怎么做。因此,如果有人可以帮助我解决此问题,我将不胜感激。

c++ qt char qstring
1个回答
0
投票

来自QString

您可以从QChar的下标运算符QString[]方法中获取at(),然后调用QChar::toLatin1()以获取char

示例:

const QString s { "text" };
const char    c = s.at(0).toLatin1(); // get first character `t`

来自std::string

您可以从std::string方法中获得QString::toStdString(),然后使用std::string的下标运算符[]at()方法来获得char

示例:

const std::string str = s.toStdString();
const char        chr = str.at(0);

请记住,at()方法执行边界检查,并且在QString::at()的情况下,访问越界索引将导致异常或运行时断言。而下标运算符[]不执行边界检查;并且,访问无效的索引将导致Undefined Behavior

© www.soinside.com 2019 - 2024. All rights reserved.