字符串到Arduino中的const char *?

时间:2011-12-20 16:37:06

标签: c++ c string 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。我该怎么做?

6 个答案:

答案 0 :(得分:9)

string有一个c_str()成员函数,返回const char *

答案 1 :(得分:9)

您如何使用substring代替。这比在不同类型的字符串之间进行转换更容易混淆。

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

答案 2 :(得分:1)

你可以更轻松地做到这一点。因为你正在使用C ++:

tweet = tweet.substring(1);

substr()以字符串形式返回字符串的一部分。 该参数是此子字符串的起始点。 由于字符串索引是从0开始的,因此1应该剪掉第一个字符。

如果你想使用strstr,你可以将推文转换成c-string:

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

然而,这是非常低效的,因为它返回一个c字符串,为了适应推文,必须将其转换为std :: string。

答案 3 :(得分:0)

使用以下语句tweet.c_str()将返回字符串缓冲区,这将允许您执行所需的编辑。

答案 4 :(得分:0)

看看:

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

See this page

答案 5 :(得分:0)

我意识到这是一个老问题,但是如果你试图比较一个特定的字符,而不只是字符串中的一个字母,那么你想要的是 string .charAt(N)。例如,如果您正在进行串行编程,并且需要检查STX(\ 02),则可以使用以下代码。

char STX = '\02'

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