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

时间:2016-04-21 12:43:31

标签: c++ c arduino

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

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

'operator ='不匹配(操作数类型为'String'和'void')

我不知道什么是错的,谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

.Replace()是一个无效函数。它直接修改字符串,因此无需将其分配给任何内容。只需像下面一样使用它,它将取代它:

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

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

修改

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