sscanf 错误:无法将'String'转换为'const char*'
sscanf error: cannot convert 'String' to '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();
实际上有效并做我想做的事。如果可能的话,我仍然想知道如何让 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 );
相关文章:
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 'HMODULE LoadLibraryA(LPCSTR)':无法将参数 1 从 'const _Elem *' 转换为 'LPCSTR'
- 将函数参数"const char*"转换为"std::string_view"是
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 启用从"vector<const T>&"到"const vector&"的隐式转换<T>
- 将 const 转换为 const char* 无效,我该如何解决?使用 gcc7 时失败
- C++ TCP 套接字 | 无法将"std::__cxx11::字符串"转换为"const
- C++ 无法从 const int* 转换为 const_iterator
- 为什么我的编译器在调用 const getter 函数时抛出"转换丢失(const)限定符"错误?
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 无法从'const std::string [3]'转换为'std::string'
- 无法在返回中转换 const 对象
- Tensorflow Lite ARM64错误:无法转换‘const int8x8_t
- 一种体面的方式来转换const列表参考参数,然后传递到另一个函数
- Overloading STD :: Whow()无法转换const char*
- 使用工厂方法时编译器错误:无法转换"const std::p air<char* const
- 强制转换 const 指针以使用旧版 C 代码
- 使用地址解释强制转换const
- c++转换const引用传递
- c#可以强制转换const吗?