【问题标题】:String to const char* in Arduino?Arduino中的字符串到const char *?
【发布时间】:2011-12-20 16:37:06
【问题描述】:

我有一个变量tweet,它是一个字符串,它的开头有一个我想剪掉的字符。

所以我想做的是使用strstr() 删除它。这是我的代码:

tweet = strstr(tweet, "]");

但是,我得到了这个错误:

cannot convert 'String' to 'const char*' for argument '1' to 
'char' strstr(const char*, const char*)

所以我的想法是将tweet 转换为字符。我该怎么做呢?

【问题讨论】:

  • 使用c_str()方法获取const char*
  • 查看String 的定义,看看是否有合适的函数(如std::stringc_str() 成员函数) - 希望有一些方法可以做你想做的事想要不乱用 C 风格的字符串。不知道String是什么,这个问题没法回答。
  • @Andrew 你为什么要删除 arduino 标签?这从问题中删除了重要信息!
  • 编写多语言源文件是一项艰苦的工作。我建议你坚持使用 C 或 C++ 之一。

标签: c++ c string char arduino


【解决方案1】:

string 有一个返回const char *c_str() 成员函数。

【讨论】:

    【解决方案2】:

    不如你改用substring。这将比在不同类型的字符串之间转换更容易混淆。

    http://arduino.cc/en/Reference/StringSubstring

    【讨论】:

    • +1 用于识别 Arduino String 类而不是 c++ std::string
    【解决方案3】:

    您可以更轻松地做到这一点。由于您使用的是 C++:

    tweet = tweet.substring(1);
    

    substr() 将字符串的一部分作为字符串返回给您。 参数是这个子字符串的起点。 由于字符串索引是从 0 开始的,所以 1 应该剪掉第一个字符。

    如果你想使用 strstr,你可以将 tweet 转换为 c 字符串:

    tweet = strstr( tweet.c_str(), "]" );
    

    但是,这非常低效,因为它返回一个 c 字符串,必须将其转换为 std::string 才能适应推文。

    【讨论】:

      【解决方案4】:

      使用以下语句tweet.c_str() 将返回字符串缓冲区,这将允许您执行所需的编辑。

      【讨论】:

        【解决方案5】:

        看看:

        string.indexOf(val)
        string.indexOf(val, from)
        

        参数

        string: a variable of type String
        val: the value to search for - char or String
        from: the index to start the search from
        

        See this page

        【讨论】:

          【解决方案6】:

          我意识到这是一个老问题,但如果你想比较一个特定的字符,而不仅仅是字符串中的一个字母,那么你想要的是 string.charAt (n)。例如,如果您正在进行串行编程并且需要检查 STX (\02),则可以使用以下代码。

          char STX = '\02'
          
          if (inputString.charAt(0) == STX) {
            doSomething();
          }
          

          【讨论】:

            猜你喜欢
            • 2010-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-11
            相关资源
            最近更新 更多