Использование String внутри switch
- Войдите на сайт для отправки комментариев
Сб, 19/12/2015 - 15:10
Помогите имеется некая функция которая возвращает тип данных String, мне нужно проверить это значение со списком уже известных значений и в зависимости от этого выбрать дальнейшую функцию, однако switch не позволяет использовать переменные типа String. Подскажите как выйти из этой ситуации?
void remote_control(char* msg){
String command = cutter(msg);
switch (command){
case "help" :
//код
break;
}
}
каскад из if()
каскад из if()
У меня такое ощущение, что нас троллят.
Каскад из if очень громоздко, я думал что нибудь более красивое подскажите
Каскад из if очень громоздко, я думал что нибудь более красивое подскажите
в рамках языка С++?
каскад из if()
У меня такое ощущение, что нас троллят.
согласен
однако switch не позволяет использовать переменные типа String
Но зато работает с char. Можно ведь сравнивать не всю строку, а только один символ. Определиться, в какой позиции строки символы наиболее уникальны и по ним вести сравнение. Даже если в выбранной позиции в нескольких строках и попадется одинаковая буква, то для такого символа сделать дополнительный фильтр не будет проблемой.
однако switch не позволяет использовать переменные типа String
Но зато работает с char. Можно ведь сравнивать не всю строку, а только один символ. Определиться, в какой позиции строки символы наиболее уникальны и по ним вести сравнение. Даже если в выбранной позиции в нескольких строках и попадется одинаковая буква, то для такого символа сделать дополнительный фильтр не будет проблемой.
Это вы шутите так?
Это вы шутите так?
Возможно, что заблуждаюсь. Но в чем прикол?
Помогите имеется некая функция которая возвращает тип данных String, мне нужно проверить это значение со списком уже известных значений и в зависимости от этого выбрать дальнейшую функцию, однако switch не позволяет использовать переменные типа String. Подскажите как выйти из этой ситуации?
Если строки в возвращаемой фунции постоянны, то проще переделать её и пусть она возвращает номера строк, которые switch и будет обрабатывать.
А не много ли телодвижений, только для того, чтобы вместо IF использовать SWITCH?
И if и switch удобнее (и быстрее) сравнивать цифры чем строки.
И if и switch удобнее (и быстрее) сравнивать цифры чем строки.
https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B8%D1%82%D0%B2%D0%B0_%D0%9...
И if и switch удобнее (и быстрее) сравнивать цифры чем строки.
https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B8%D1%82%D0%B2%D0%B0_%D0%9...
Цитата из указанной ссылки:
Переформулированный на языке теории информации, принцип бритвы Оккама гласит, что самым точным сообщением является сообщение минимальной длины.
Даже принцип бритвы Оккама говорит о том, что лучше сравнивать номера строк чем сами строки.
Принцип гласит: "Не плодите сущности без необходимости".
Можно предвычислить CRC для каждой строки и записать их в операторы switch. И перед вызовом switch считать CRC для целевой строки.
Можно предвычислить CRC для каждой строки и записать их в операторы switch. И перед вызовом switch считать CRC для целевой строки.
А можно для каждой строки назначить еще одну строку, соединить их, зашифровать и сравнивать ) ...
"Делать нам больше нечего, только вот разных собак из реки вытаскивать" (с)
Принцип гласит: "Не плодите сущности без необходимости".
Данное сообщение как раз пример сущности без необходимости.
Что же касается моего предложения, то кучка программ использует вывод текстовых сообщений (меню, настройки и прочее) по номерам строк - так легче использовать в программе разные языки (в том числе и русский).
однако switch не позволяет использовать переменные типа String
Не позволяет - это значит выдаётся ошибка?
Почему бы не написать, какая конкретно? А то, например, у меня не всегда ардуиносреда под рукой.