нужна помощь в написании функции str to array
- Войдите на сайт для отправки комментариев
Сб, 07/09/2019 - 15:32
Есть задача - разбить строку на элементы по разделителю и поместить эти самые элементы в массив
То что имеется сейчас:
uint32_t CountTokens(String str, char separator = ' ') { uint32_t count = 0; int pos = 0; String l_str = str; l_str.trim(); if (l_str.length() <= 0) return 0; pos = l_str.indexOf(separator); while (pos >= 0) { count++; pos = l_str.indexOf(separator, pos + 1); } return ++count; } //------------------------------------------------------------------------ String GetToken(String str, uint32_t index, char separator = ' ') { uint32_t count = CountTokens(str, separator); if (count <= 1 || index < 1 || index > count) return str; uint32_t pos_start = 0; uint32_t pos_end = str.length(); count = 0; for (uint32_t i = 0; i < pos_end; i++) { if (str.charAt(i) == separator) { count++; if (count == index) { pos_end = i; break; } else { pos_start = i + 1; } } } return str.substring(pos_start, pos_end); } //------------------------------------------------------------------------ void setup() { // put your setup code here, to run once: String myString = "I;am;little;array"; Serial.begin(9600); Serial.print("String = "); Serial.println(myString); uint32_t ct = CountTokens(myString, ';'); Serial.print("Count = "); Serial.println(ct, DEC); for (uint32_t i = 1; i <= ct; i++) { Serial.print("Token "); Serial.print(i, DEC); Serial.print(" = "); Serial.println(GetToken(myString, i, ';')); } } void loop() { // put your main code here, to run repeatedly: }
У String есть возможность добраться до её массива символов (метод c_str). Вот доберитесь, а с массивом символов и писать ничего не надо - там есть встроенная функция strtok специально для этого сделанная.