Почему возникает ошибка

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

Считываю строку с часов в строковую переменную _dataD и перую цифру этой строки преобразую в целое;

String _temp;

String _dataD;

​int _mrDd;
 
  _dataD = _myRTC.gettime("d-m-Y");  

Так вот, если операцию выполнять как, как закомментировано, то все окей, если делать в одно строку, то ошибка компиляции: request for member 'toInt' in '_dataD.String::operator[](0u)', which is of non-class type 'char'

Хотя, по идее - это одно и тоже или я чего-то не понимаю?

//  _temp = _dataD[0]; 
//  _mrDd = _temp.toInt();
  _mrDd = _dataD[0].toInt()

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

С Вашей датой регистрации вставлять код не по правилам просто неприлично!

Да, не понимаете. Результатом операции [] является char - просто символ, а вовсе не String. В зкомментированном куске Вы присваиваете его переменной типа String а уж от неё берёте toInt. А в незакомментированной - Вы пытаетесь вызывать метод toInt типа char, а его там отродясь не было.

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

Я очень редко бываю тут, вопросов не возникало, поэтому пока не понял, как правильно вставить код из скетча...

За объяснение спасибо, таким образом, действие [i] к переменной типа String возвращает i-й символ типа char ... теперь понятно.

Вообще, задача преобразования строки (которая считывается с часов) в int  у меня возникла с необходимостью корректировать эти самые часы