2011-12-20 300 views
1

我有一个变量tweet这是一个字符串,它在开始时有一个字符,我想剪掉。在Arduino中const char *的字符串?

所以我想要做的是使用strstr()删除它。这里是我的代码:

tweet = strstr(tweet, "]"); 

不过,我得到这个错误:

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

所以,我的思想会tweet转换成字符。我会怎么做呢?

+3

使用'c_str()'方法来获得'为const char *' – ismail 2011-12-20 16:38:22

+2

看一看String'的'的定义,并看看有没有合适的函数(如'c_str()'成员函数'std :: string') - 希望有一些方法可以做到你想要的而不用搞乱C风格的字符串。不知道'String'是什么,这个问题不能回答。 – 2011-12-20 16:40:21

+1

@Andrew为什么你删除了arduino标签?这从问题中删除了重要信息! – 2011-12-20 16:45:13

回答

9

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

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

+0

谢谢,这工作! – iosfreak 2011-12-20 16:49:05

+1

用于识别Arduino String类而不是C++的+1 std :: string – 2011-12-20 16:49:54

0

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

5

string has a c_str()成员函数返回const char *

1

你可以做到这一点更容易。由于您使用的是C++:

tweet = tweet.substring(1); 

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

如果你想使用的strstr就可以只投鸣叫成C字符串:

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

然而,这是相当低效的,因为它返回一个C-字符串,必须要变成一个std ::为了适应tweet,反对字符串。

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

0

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

char STX = '\02' 

if (inputString.charAt(0) == STX) { 
    doSomething(); 
} 
相关问题