2011-12-20 337 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(); 
} 
相關問題