из "$1235 4854 4569" вернуло "1 0 0 0" bool parsing(String s, int *r, int *g, int *b) { //skip "$" String rs = s; String gs = s; String bs = s; rs.remove(1, 4); gs.remove(6, 4); bs.remove(11, 4); *r = rs.toInt(); *g = gs.toInt(); *b = bs.toInt(); return true; }
Комментарии: 11
Anonim
Ну я бы проверку сделал. Вдруг toInt не спарсил и не вижу контроля длинны строки... Если передадут кривые данные у тебя будет креш Вообще то проверять правильность передаваемых данных функции это хорошая манера...
Wowlikonpy
bool parsing(String s, int *r, int *g, int *b) { if(15 >= sizeof(s) / sizeof(String)){ String rs = s; String gs = s; String bs = s; rs.remove(1, 4); gs.remove(6, 4); bs.remove(11, 4); *r = rs.toInt(); g = gs.toInt(); *b = bs.toInt(); return true; }else{ return false; } }
Anonim
А нахуй так сложно? Нельзя написать if(15 >= sizeof(s) / sizeof(String)) return false и не делать else?) Да и условие у тебя кривое. Если длинна строки будет меньше 15
Wowlikonpy
лучше ==15
Anonim
И sizeof(String) и sizeof (s) тоже плохая идея. это же объект if (s.length() != 15) return false;
Wowlikonpy
это да
Viper
че ты страдаешь то int a,b,c; const char *str = "$1235 4854 4569"; sscanf(str, "$%d %d %d", &a, &b, &c); проверки уж сам добавь
Wowlikonpy
а что так можно было?
Viper
разрешаю
Anonim
sscanf менее производительно работает...
Viper
в сравнении с чем?