sscanf错误:无法转换' String'到#char; char *'

时间:2016-07-17 09:30:43

标签: c++ string arduino char const

我尝试从字符串中提取由空格分隔的两个数字,并将它们保存为两个整数。例如:

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工作。

感谢您提前回复..

2 个答案:

答案 0 :(得分:2)

您可以尝试使用toCharArrayString转换为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 );