запись string в array

xoyushka
Offline
Зарегистрирован: 02.10.2017

как написать функцию которая из dataFromPort будет помещать цифры в массив int array[0]= 1 элементу dataFromPort

array[1]= 2му и т.д

____

Грубо говоря если у нас dataFromPort =1213455 то array[]={1,2,3,4,5,5};

 

String dataFromPort;

void doParse()
{
    if(!dataFromPort.length())
        return;
  
    // тут разбираете строку, как вам надо
    int idx = dataFromPort.indexOf(' ');
    if(idx > -1)
    {
        String command = dataFromPort.substring(0,idx);
        dataFromPort = dataFromPort.substring(idx+1);
        if(command == "LED")
        {
            // тут парсим остаток строки
            idx = dataFromPort.indexOf(' ');
            if(idx > -1)
            {
                int ledIndex = dataFromPort.substring(0,idx).toInt();
                dataFromPort = dataFromPort.substring(idx+1);
                switch(ledIndex)
                {
                    case 1:
                     Serial.println(ledIndex);
                     Serial.println(dataFromPort);
                    break;
                  
                    case 2:
                      Serial.println(ledIndex);
                      Serial.println(dataFromPort);
                    break;
                  
                    // .... и т.д.
                }
              
            }
        }
    }
}

 

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

xoyushka пишет:

как написать функцию которая из dataFromPort будет помещать цифры в массив int array[0]= 1 элементу dataFromPort

array[1]= 2му и т.д

____

Грубо говоря если у нас dataFromPort =1213455 то array[]={1,2,3,4,5,5};

В строке нет ничего, кроме цифр? 

ну, так преобразуйте её в массив методом toCharArray(), а потом из каждого элемента массива вычтете '0'.

xoyushka
Offline
Зарегистрирован: 02.10.2017

не понял

Nosferatu
Offline
Зарегистрирован: 04.11.2012

Вообще к строке можно обращается, как к массиву символов, по индексу. Ну а тогда преобразовываем символ в нужный нам вид и запиховываем в массив, в цикле. Примерно так.

void setup() {
  Serial.begin(9600);
}

void loop() {
  String str = "1213455";
  int array[str.length()];
  for (int i = 0; i < str.length(); i++) {
    array[i] = int(str[i]) - 48;
    Serial.println(array[i]);
  }
}

Наверняка можно сделать и попроще.