QString эквивалент .at() C QT

#c #qt

#c #qt

Вопрос:

Я пытаюсь запустить строку:

 out.push_back( a.at(0) );
 

Где out — QVector, содержащий целые числа

 QVector <int> out ( 0 );
 

Код ошибки, который он мне выдает, является:

 error: no matching function for call to 'QVector<int>::push_back(const QChar)'
                 out.push_back( a.at(0) );
                                        ^
 

Что заставляет меня поверить, что .at() возвращает не целое число из этого места в QString a, а вместо этого const QChar .

Есть ли какой-либо способ, которым я могу заставить его вернуть это целое число или лучшую функцию QString, которую мне не хватает?

Ответ №1:

Что не так?

Ваш a — это a QString , и его функция-член QString::at() всегда возвращает QChar . Насколько я помню, std::string::at() in C возвращает char тоже, а не int . С типами данных в C / Qt следует обращаться осторожно!

Поэтому возвращаемое QChar значение должно быть переведено в int first, чтобы соответствовать типу вашего QVector<int> шаблона.

Но не беспокойтесь, QChar для этого есть функция-член: QChar::digitValue (Возвращает числовое значение цифры или -1, если символ не является цифрой.)


Решение:

Попробуйте out.push_back(a.at(0).digitValue()); вместо этого.