【问题标题】:Split string into string and int将字符串拆分为字符串和整数
【发布时间】:2017-07-25 14:44:44
【问题描述】:

我正在尝试使用sscanf(inputCmd, "%s%d", cmd, value); 将字符串inputCmd 转换为字符串cmd,并在我的Arduino 草图中转换为int value。但是它不起作用,因为显然变量是错误的类型(字符串,而不是 char*)

inputCmd 的格式为 FOO90,无论是数字的长度还是字符串的长度都不能假定为常数。将inputCmd 的两部分分开并将它们存储在 2 个变量中的最佳方法是什么? cmd 应该是 FOO,value 应该是 90。

谢谢。

【问题讨论】:

  • FOO 里面可以有数字吗?喜欢FOO123BAR42?
  • 不,只会是 XXXXXXXYYY,其中 X 是字母,Y 是数字。长度未知。
  • 我的理解是要把整型变量的地址传给sscanf,比如sscanf(inputCmd, "%s%d", cmd, &value);
  • 好的。然后计数,直到找到第一个数字,然后使用该位置拆分字符串。
  • @ThomasMatthews 使用 &value 我得到“无法将参数 '1' 的 'String' 转换为 'const char*' 到 'int scanf(const char*, ...)'”

标签: c++ string arduino


【解决方案1】:

除了 Stringchar* 的问题之外,scanf 格式 "%s" 读取 空格分隔 字符串。如果字符串和数字之间没有空格,则不能使用sscanf

作为一种可能的解决方案,您可以尝试获取输入字符串每个部分的substring,以及数字部分convert it to an int

要找出第一个子字符串的长度(应该放入cmd)和数字的起始位置,您需要遍历字符串的字符,直到找到non-alphabetic字符。

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 2011-05-31
    • 1970-01-01
    • 2021-12-07
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多