我尝试从字符串中提取由空格分隔的两个数字,并将它们保存为两个整数。例如:
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();
实际上工作并做我想要的。我仍然想知道如果可能的话,如何让sscanf工作。
感谢您提前回复..
答案 0 :(得分:2)
您可以尝试使用toCharArray将String
转换为char
数组,并将其传递给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 :(得分:1)
String
是一个类,而不是基本类型。这意味着如果要在sscanf
中使用它,则需要一种方法将指针转换/返回char。该方法存在,它被称为c_str()
。
所以,你的行必须是:
sscanf( input_string.c_str(), "%d %d", &servo_choice, &input_number );