c++ - Arduino 上的 C/C++ 字符串 .replace() 函数不起作用

标签 c++ c arduino

我在 Arduino 中有这种方法,它的编程语言基于 C/C++,它应该替换\r 和\n 以便它按原样打印\r 和\n,但是当我尝试运行它给出的代码不匹配运算符(operator)错误:

void debugmsg(String msgtext) {
  msgtext = msgtext.replace("\r","\\r");
  msgtext = msgtext.replace("\n","\\n");
  Serial.println(msgtext1 + "\r\n");
}

no match for 'operator=' (operand types are 'String' and 'void')

我不知道怎么了,谢谢你的帮助!

最佳答案

.Replace() 是一个空函数。它直接修改字符串,因此无需将其分配给任何东西。只需像下面这样使用它,它就会替换它:

msgtext.replace("\r","\\r");
msgtext.replace("\n","\\n");

Arduino 的 replace() 函数与您在此处使用的函数不同,因为此处使用的是 C/C++ 编程语言。那个确实返回一个 String

编辑:

正如@unwind 所注意到的,Arduino Documentation声明 replace() 返回一个字符串。但是,语法部分 AND 在他们的示例代码中 HERE ,它显示了该函数的例行用法,该函数直接修改字符串而不返回 String !我不知道。无论如何,只需将它用作我上面的代码即可。

关于c++ - Arduino 上的 C/C++ 字符串 .replace() 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770020/

相关文章:

java - 通过 JNI 访问 C 中的缓存

c++ - USB 磁盘写入延迟 (windows)

c - 为什么 &a 是非法左值以及为什么在 scanf() 函数中使用它

c# - C/C++ 等同于 C# 参数

c++ - 如何按值在两个 vector 之间淡入淡出?

c++ - 关于 CMake 错误 : No source given to target 的问题

c++ - 通过 C++ 获取 micro SD 卡的大小

c++ - 我们可以在 C++ MFC 应用程序的对话框中为控件的所有边设置边框吗?

c++ - 使用 std::set_intersection 时,哪个集合用于将值复制到目标集合中?

arduino - avrdude : stk500v2_ReceiveMessage(): timeout