#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());
вместо этого.