Как разбить строку на слова C++ (Arduino)

98
09 июня 2021, 21:30

На вход мы должны дать "test=qwerty" разделить нужно по = Например split("test=qwerty","=") на выходе должны получить массив ["test","qwerty"]

В C++ скажу честно я не силен (откровенно ламер). стоит задача создать веб морду для ардуино для управления умным домом. esp8266 я поднял, сделал ответ на GET (вкл/выкл) светодиода у 13 pin`а, теперь сделал форму для выбора типа подключения при нажатии кнопки отправить на ардуинку приходит GET запрос "GET /?contents=sc HTTP 1.1" я смог убрать GET /? и HTTP 1.1 и теперь мне нужно сделать действия на атрибуты.

String split ( String text, char del ) {
  char arr[99];
  int count = 0;
  char step_text = "";
  for ( int i=0; i<text.length(); i++ ) {
    step_text += (char)text[i];
    if ( text[i] == del ) {
      arr[count] = step_text;
      count++;
      step_text = "";
    }
  }
  return arr;
}
Answer 1

Можно вот так попробовать. Если нужно вернуть массив из двух частей.

String* split ( String text, char del ) {
  char arr[2];
  int count = 0;
  for ( int i=0; i<text.length(); i++ ) {
    if(oneLine.charAt(i) == del) 
     { 
      sa[0] = oneLine.substring(0, i); 
      sa[1] = oneLine.substring(i+1, text.length()-1); 
     }
   }
  return arr;
}

Если строка содержит больше двух значение с разделителями, то рассмотрим функцию, которая возвращает часть с номером index:

String getPart(String text, char del, int index)
{
  int found = 0;
  int sInd[] = {0, -1};
  int mInd = text.length()-1;
  for(int i=0; i<=mInd && found<=index; i++){
    if(text.charAt(i)==del || i==mInd){
        found++;
        sInd[0] = sInd[1]+1;
        sInd[1] = (i == mInd) ? i+1 : i;
    }
  }
  return found>index ? text.substring(sInd[0], sInd[1]) : "";
}

Пример

String text = "p1=p2=p3";
String part2 = getPart(text, '=', 1);
Serial.println(part2); // p2
READ ALSO
В чём отличие функции от метода в C++?

В чём отличие функции от метода в C++?

На пути обучения C++ столкнулся с такими понятиями, как методы и функции и, собственно, не нахожу отличий между нимиОписываются они одинаково...

112
Как правильно создать локальный хук используя c++ dll?

Как правильно создать локальный хук используя c++ dll?

Здравствуйте уважаемые господа программистыСразу скажу - я новичок в C++ и многого не знаю, по этому не кидайте тапками

106
С++. Проблема со всем. Visual Studio Code

С++. Проблема со всем. Visual Studio Code

Только начал программировать на C++, в итоге ничего не понять, как начатьПопытался установить на Visual Studio Code и C++, и code runner, в итоге написал простенькую...

189