из "$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

  1. 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;

      • Viper

        че ты страдаешь то int a,b,c; const char *str = "$1235 4854 4569"; sscanf(str, "$%d %d %d", &a, &b, &c); проверки уж сам добавь

        • Wowlikonpy

          а что так можно было?

          • Viper

            разрешаю

        • Anonim

          sscanf менее производительно работает...

          • Viper

            в сравнении с чем?

Не нашли ответ?

Вам также может быть интересно