Преобразовать строку в массив
У меня есть проект, и мне нужно преобразовать строку (содержащую цифры и буквы) в массив
String name = "s111, s222, bbbb,cccc ";
и я хочу
array[0] = s111;
array[1] = s222;
array[2] = bbbb;
array[3] = cccc;
вот код:
String name = "s111, s222, bbbb,cccc ";
int array[50];
int r=0,t=0;
for(int i=0;i<name.length();i++){
if(name.charAt(i) == ','){
array[t] = name.substring(r,i);
r = (i+1);
t++;
}
for(int k=0 ;k<=t ;k++){
Serial.println(array[k]);
}
Когда я компилирую, я получаю только нули, например:
array[0] = 0;
array[1] = 0;
array[2] = 0;
array[3] = 0;
@yo777, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 0
Когда вы объявляете int array[50];
, вы объявляете массив чисел, поэтому внутри него могут храниться только числа. Если вам действительно нужен массив строк, объявите массив строк, например String array[50];
. Также была проблема, заключавшаяся в том, что иногда вы разделяли name
запятой, иногда пробелом, а иногда и запятой+пробелом. Также в вашем коде отсутствовала закрывающая скобка.
Алгоритм должен разделить как запятую, так и пробел, а затем принять только значения, длина которых больше единицы, чтобы избежать вставки пустых строк.
String name = "s111, s222, bbbb,cccc ";
String array[50];
int r=0,t=0;
for(int i=0;i<name.length();i++)
{
if(name[i] == ' ' || name[i] == ',')
{
if (i-r > 1)
{
array[t] = name.substring(r,i);
t++;
}
r = (i+1);
}
}
for(int k=0 ;k<=t ;k++)
{
Serial.println(array[k]);
}
,
@Filip Franik
спасибо, это работает, @yo777
Смотрите также:
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- форматирование строк в Arduino для вывода
- Очень простая операция Arduino Uno Serial.readString()
- DateTime в строку
- Как преобразовать строку в массив байтов
- Как отправить строку на мастер с помощью i2c
- Создание форматированной строки (включая числа с плавающей запятой) в Arduino-совместимом C++
Что именно не работает? Чего вы ожидали и что произошло на самом деле? Пожалуйста, предоставьте полный компилируемый код (в нем нет объявления других переменных, включая массив). Также может быть полезен мой ответ на этот вопрос., @chrisl
почему вы просите нас угадать, что на самом деле делает ваш код? ... мы даже не можем протестировать ваш код, потому что вы предоставили код, который не компилируется ... ваше описание проблемы "не работает", это бесполезно, @jsotola
думаю описание понятно, @yo777
Насчет «я хочу
array[0] = s111;
»: это не имеет смысла. «array» — это массив «int», а «s111» не является «int»., @Edgar Bonetспасибо, но у вас есть другой способ разделить символ этой переменной, @yo777
Вам нужен массив строк или массив целых чисел? Если int, как следует интерпретировать последние 2 части? Шестнадцатеричный код ASCII?, @chrisl
массив строк, @yo777
«Я думаю, что описание понятно». Ты неправ. Ваш вопрос - мутная каша. Вы предоставили нам недостаточно кода для тестирования вашей программы. Вы не сказали нам, что не так с вашим текущим кодом. Вы не сказали нам, в каком формате должен быть ваш вывод (вы, наконец, сказали «массив строк» в комментариях, но вам нужно отредактировать свой вопрос, чтобы предоставить полное описание проблемы в самом вопросе. Не делайте этого). Не ждите, что кто-то попытается помочь вам прочитать бесконечную сессию вопросов и ответов, чтобы понять, что вы на самом деле спрашиваете., @Duncan C