Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Строка для const char * в Arduino?

Автор вопроса: iosfreakОтветов: 6

У меня есть переменная tweet, которая представляет собой строку, и в самом начале у нее есть символ, который я хочу обрезать.

Итак, что я хочу сделать, это использовать strstr(), чтобы удалить его. Вот мой код:

tweet = strstr(tweet, "]");

Однако я получаю эту ошибку:

cannot convert 'String' to 'const char*' for argument '1' to
'char' strstr(const char*, const char*)

Поэтому я подумал бы преобразовать tweet в char. Как мне это сделать?

  • Используйте метод c_str(), чтобы получить const char* ismail 20.12.2011
  • Взгляните на определение String и посмотрите, есть ли подходящая функция (например, функция-член c_str() для std::string) - надеюсь, будет какой-то способ сделать то, что вы хотите, не возясь со строками в стиле C. Не зная, что такое String, на этот вопрос нельзя ответить. Mike Seymour 20.12.2011
  • @ Эндрю, почему ты удалил тег arduino? Это удалило важную информацию из вопроса! R. Martinho Fernandes 20.12.2011
  • Написание многоязычных исходных файлов - тяжелая работа. Я предлагаю вам придерживаться одного из C или C++. pmg 20.12.2011

cc++stringarduinochar

Ответы

Ответ 1 · рейтинг 9 · David Grayson

Как насчет того, чтобы вместо этого использовать substring. Это будет менее запутанно, чем преобразование между различными типами строк.

http://arduino.cc/en/Reference/StringSubstring

Ответ 2 · рейтинг 15 · Ernest Friedman-Hill

string имеет функцию-член c_str(), которая возвращает const char *.

Ответ 3 · рейтинг 1 · s3rius

вы можете сделать это проще. Поскольку вы используете С++:

tweet = tweet.substring(1);

substr() возвращает вам часть строки в виде строки. Параметр является отправной точкой этой подстроки. Поскольку индекс строки начинается с 0, 1 должен отсекать первый символ.

Если вы хотите использовать strstr, вы можете просто преобразовать tweet в c-строку:

tweet = strstr( tweet.c_str(), "]" );

Однако это довольно неэффективно, так как возвращает c-строку, которую нужно преобразовать в std::string, чтобы вписаться в твит.

Ответ 4 · alf

Использование следующего оператора tweet.c_str() вернет строковый буфер, который позволит вам выполнить желаемое редактирование.

Ответ 5 · pat1300

Смотреть на:

string.indexOf(val)
string.indexOf(val, from)

Параметры

string: a variable of type String
val: the value to search for - char or String
from: the index to start the search from

Посмотреть эту страницу

Ответ 6 · Brian Chow

Я понимаю, что это старый вопрос, но если вы пытаетесь, скажем, сравнить конкретный char, а не только одну букву в строке, то вам нужна string.charAt(n) . Например, если вы выполняете последовательное программирование и вам нужно проверить STX (\02), вы можете использовать следующий код.

char STX = '\02'

if (inputString.charAt(0) == STX) {
  doSomething();
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы