sscanf 错误:无法将'String'转换为'const char*'

sscanf error: cannot convert 'String' to 'const char*'

本文关键字:转换 const char String 错误 sscanf      更新时间:2023-10-16

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

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

提前感谢您的任何回复..

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

String是一个类,而不是基本类型。这意味着如果您想在 sscanf 中使用它,您需要一种方法来转换/返回指向 char 的指针。该方法存在,称为 c_str() .

因此,您的行必须是:

sscanf( input_string.c_str(), "%d %d", &servo_choice, &input_number );