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

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

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

tweet = strstr(tweet, "]");

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

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

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


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


Ответы (6)


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

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

person David Grayson    schedule 20.12.2011
comment
+1 за распознавание класса Arduino String вместо c++ std::string - person Dave Rager; 20.12.2011

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

person Ernest Friedman-Hill    schedule 20.12.2011

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

tweet = tweet.substring(1);

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

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

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

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

person s3rius    schedule 20.12.2011

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

person alf    schedule 20.12.2011

Смотреть на:

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

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

person pat1300    schedule 11.12.2013

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

char STX = '\02'

if (inputString.charAt(0) == STX) {
  doSomething();
}
person Brian Chow    schedule 26.01.2014