2016-08-16 4 views
0

私はArduinoを使用しており、シリアルから文字列を受け取ります。私はその文字列を文字配列に変換しました。しかし、私はその配列の最初の4つまたは5つの要素を文字列に変換する必要があります。それを行う方法はありますか?可変数の文字配列の要素を文字列に変換する方法

私は次のことを試してみましたが、それは動作しません:

String str= String('a[0]'); 

答えて

1

あなたが欲しい何がstd::stringsubstr方法です。

convetr the char[] to an std::stringを入力し、substrを使用して、必要なサブストリングを取得することができます。

std::string str("The quick brown fox jumps over the lazy dog"); 
std::cout << str.substr(0, 9); 

出力は次のようになります。

迅速

+0

あなたのクイック応答ivanに感謝します。ここで何をしようとしているのは、シリアルから文字列を取得することです。文字列がCOMSTEPで始まる場合は、残りの文字列を分析してトークン化する関数に入ります。文字列はスペースで区切られた文字で構成されます。文字列をcharに変換する必要がありますか、それを行うための他の方法がありますか? P.S:arduinoでのnoobです。ので、どんな助けもありがとう –

+0

すでに文字列がある場合、それを変換する必要はありません。あなたが持っている文字列を部分文字列にするだけです。 –

0
char arr[m]; 
std::string str=""; 
for(int i = 0; i < n; i++) { 
    str += arr[i]; 
} 

私はあなたが文字列にchar aarの最初のn個の要素を変換したいと仮定しています。

それとも

char* inp = ..; 
int size = 4; // int size = 5; 
std::string str(inp, size); 
+0

境界を確認していません。 'n> m'ならば? –

+1

また、 'std :: string'にはそのためのコンストラクタがあります。 –

+0

@IvanRubinson:OPがそれを述べているので、最初の4文字または5文字を文字列に変換したいと考えています。したがって、私はそれを 'm> n 'と仮定しました。 – Shravan40

2
char* data = ...; 
int size = 4; 
std::string str(data, size); 

それはのstd ::文字列のコンストラクタでエレガントです。

関連する問題