2016-07-17 19 views
1

文字列からスペースで区切られた2つの数値を抽出し、2つの整数として保存しようとしています。たとえば、次のようにsscanfエラー: '文字列'を 'const char *'に変換できません

if input_string = "1 95" then: 
servo_choice = 1 
input_number = 95 

コード:

String input_string = ""; 
int input_number = 0; 
int servo_choice = 0; 

input_string = Serial.readString(); 
sscanf(input_string, "%d %d", &servo_choice, &input_number); 

IDEが私にこのエラー与える:

exit status 1 
cannot convert 'String' to 'const char*' for argument '1' to 'int scanf(const char*, ...)' 

編集:私は

input_number = input_string.substring(1,5).toInt(); 

を推測実際に動作し、何をするにI欲しいです。私はまだ可能ならsscanfを動作させる方法を知りたいです。事前にすべての回答のため

おかげ..

+0

だから、あなたの行がなければなりません。タグと質問を更新してください。 – 2501

答えて

2

あなたはtoCharArrayであなたのStringchar配列に変換しようとsscanfにそれを渡すことができます。何かのようなものです(しかし、テストされていません)

int buffer_len = input_string.length() + 1; 
char buffer[buffer_len]; 
input_string.toCharArray(buffer, buffer_len); 
sscanf(buffer, "%d %d", &servo_choice, &input_number); 
1

Stringは、基本タイプではないクラスです。つまり、sscanfで使用する場合は、ポインタをcharに変換/返すメソッドが必要です。その方法は存在し、それはc_str()と呼ばれています。あなたがタグも間違っている場合には、C++でコンパイルしている

sscanf(input_string.c_str(), "%d %d", &servo_choice, &input_number); 
関連する問題