Кто нибудь сталкивался с такой проблемой? Попытка явного перевода из строки в число (int number = int("21")) выдаёт ошибку (error: invalid cast from type 'String' to type 'int'), а со строками не очень удобно работать.
atoi() - это круть, но просит на вход const char*, а я могу максимум char сделать( Где здесь копать? Хотя тут char используют...
Может в коде ошибка? Код (Text): someint = atoi(strToChar(valvePin); char strToChar(String str){ int ln = str.length(); char rez[ln]; for(int i = 0; i < ln; i++){ rez[i] = char(str[i]); } return rez; } atoi ругается на то, что это не CONST CHAR...
Так нельзя делать. Сейчас напишу... Код (Text): const int n = 10; char *z = new char[n]; String s = "12345"; s.toCharArray(z,n); int x = atoi(z); // ... delete[] z;
Вроде стало лучше, но вылезла другая ошибка (undefined reference to `operator new[](unsigned int)'). Выходит мой компилятор не знаком с оператором new Правда я позволил себе внести правки), хотя в вашем примере было так же, плюс на delete ругался... Код (Text): int strToInt(String str){ const int c = 10; // int ln = str.length(); char *rez = new char[c]; str.toCharArray(rez, c); int rez2 = atoi(rez); return rez2; }
Вроде работает. Я создал массив (статический) так, что бы с запасом было, а функции toCharArray передаю нужное кол-во символов.
Каюсь, проглядел. Вот знал же, что оно там должно быть! Полез вместо справочника правду искать прямо в исходники и самое главное пропустил.
Код (C++): String str = "abs"; uint8_t ln = str.length(); uint8_t input[ln] ; for(uint8_t i = 0; i < ln; i++ ){ input[i] = str.charAt(i); } Как-то так...