私はArduinoを使用しており、シリアルから文字列を受け取ります。私はその文字列を文字配列に変換しました。しかし、私はその配列の最初の4つまたは5つの要素を文字列に変換する必要があります。それを行う方法はありますか?可変数の文字配列の要素を文字列に変換する方法
私は次のことを試してみましたが、それは動作しません:
String str= String('a[0]');
私はArduinoを使用しており、シリアルから文字列を受け取ります。私はその文字列を文字配列に変換しました。しかし、私はその配列の最初の4つまたは5つの要素を文字列に変換する必要があります。それを行う方法はありますか?可変数の文字配列の要素を文字列に変換する方法
私は次のことを試してみましたが、それは動作しません:
String str= String('a[0]');
あなたが欲しい何がstd::string
のsubstr
方法です。
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);
出力は次のようになります。
迅速
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);
境界を確認していません。 'n> m'ならば? –
また、 'std :: string'にはそのためのコンストラクタがあります。 –
@IvanRubinson:OPがそれを述べているので、最初の4文字または5文字を文字列に変換したいと考えています。したがって、私はそれを 'm> n 'と仮定しました。 – Shravan40
char* data = ...;
int size = 4;
std::string str(data, size);
それはのstd ::文字列のコンストラクタでエレガントです。
あなたのクイック応答ivanに感謝します。ここで何をしようとしているのは、シリアルから文字列を取得することです。文字列がCOMSTEPで始まる場合は、残りの文字列を分析してトークン化する関数に入ります。文字列はスペースで区切られた文字で構成されます。文字列をcharに変換する必要がありますか、それを行うための他の方法がありますか? P.S:arduinoでのnoobです。ので、どんな助けもありがとう –
すでに文字列がある場合、それを変換する必要はありません。あなたが持っている文字列を部分文字列にするだけです。 –