Сравнение строк
Я пытаюсь сравнить две строки, но каждый раз получаю неловкие результаты. Когда я использую функцию Equals(), я всегда получаю неправильный ответ и никогда не удовлетворяю оператору IF . Когда я использую функцию compareTo(), я всегда получаю правильный ответ (который, кстати, неверен), но он всегда просто удовлетворяет оператору IF.
String input;
String Answer = "cat";
void setup()
{
Serial.begin(19200);
}
void loop()
{
while (Serial.available() == 0)
{
Serial.readStringUntil('\n');
if (input.equals(Answer))
{
Serial.println(input + ", Correct");
}
else
{
Serial.println(input + ", wrong");
}
}
}
Выше приведен код, который я использую для изучения сравнения строк.
@ASAD ALI, 👍0
1 ответ
▲ 1
Вы определили переменную с именем input
, но никогда не присваиваете ей значение
. Таким образом, он всегда должен иметь свое начальное значение, которое представляет собой пустую
строку.
Здесь:
Serial.readStringUntil('\n');
вы, вероятно, имели в виду
input = Serial.readStringUntil('\n');
,
@Edgar Bonet
Смотрите также:
- Проблемы с преобразованием byte[] в String
- Недопустимое преобразование из 'char' в 'const char*' [-fpermissive] в строке
- Чтение из SPIFFS - Как лучше всего работать со строковым (или char) массивом с неопределенной длиной?
- Чтение и запись в EEPROM
- Я не могу правильно получить строку, которую я отправил через nrf
- Второй элемент в массиве не назначается из объекта структуры, ArduinoJson
- Еще один простой и глупый вопрос о строках C++
- Сравнение текстовой строки с текстовым выводом (DHT22)
Эдгар Бонет благодарит. Я инициализировал ввод, как вы упомянули. Но результаты те же самые. Я не знаю, что здесь не так., @ASAD ALI
@ASADALI, добавьте
input.trim()
послеinput = Serial.readStringUntil('\n');
чтобы удалить \r, @Juraj