【问题标题】:Concatenating strings together in Arduino在Arduino中将字符串连接在一起
【发布时间】:2026-02-23 02:30:02
【问题描述】:

我想做类似的事情:

char* a = (char*)msg[0];
char* b = (char*)msg[1];
char* c = a + "," + b;

其中msgint 的数组。

N.B.:这是 Arduino C++,而不是普通的 C++。

【问题讨论】:

  • 你应该使用std::string::operator+
  • 我不能在arduino中使用它。我不知道为什么编译器不知道它
  • @JongzPuangput 你确定你的编译器理解 C++,而不是 C?
  • 请在您的代码中添加msg的定义。它是一个字符串数组吗?
  • 你为什么要把两个ints 转换成两个char*s 然后把它们加在一起。这里有一些可疑的错误。也许您应该添加所有相关信息并告诉我们您正在尝试做什么......

标签: c++ arduino


【解决方案1】:

Arduino 不使用std::string,而是使用String(注意大写S 并删除std::)。大多数情况下,它们的使用方式与std::string 相同。所以基本上你应该能够做到这一点:

String a("hello");
String b(" world");
c = a + b;

如果你想将整数转换为String,它有一个构造函数可以做到这一点,例如:

String a = String(msg[0]);
String b = String(msg[1]);

您可以找到更多示例 herehere

【讨论】:

    【解决方案2】:

    参见 strcat。 您似乎正在编程 C,而不是 C++。 这应该包含在最基本的教程中。

    【讨论】:

    • 我误会了吗?? arduino 不是用 C++ 开发的吗??
    • @JongzPuangput 通常,当您编写看起来像 C 的代码时,人们会说“这不是 C++”。但从技术上讲,很多 C 代码也是有效的 C++。不确定你的是否是,因为我不知道 msg 是什么,但转换为 char* 可能是错误的。
    • @JongzPuangput 这并不意味着投射没有错。但是没有足够的信息可以确定。
    【解决方案3】:

    解决方案

    所以这是我的解决方案,谢谢大家。

      String a = String(msg[0]);
      String b = String(msg[1]);
      String c = a + "," + b;
      char* d;
      c.toCharArray(d,c.length());
    
      mclient.publish("topic1/sensorAck",d);
    

    【讨论】: