2017-04-02 60 views
1

我在替换所有:和我的ESP8266 Mac地址中的_。我试过replace()方法是这样的:Arduino替换:与_

WiFi.macAddress().replace(WiFi.macAddress().begin(), 
WiFi.macAddress().end(), ':', '_'); 

但它不工作,并抛出'class String' has no member begin

我不是C++专业人士,所以也许你可以帮我在Mac地址中用_替换所有:

+1

你不需要'.begin()'或'.END()'中的Arduino的'String'类取代:https://www.arduino.cc/en/Tutorial/StringReplace – UnholySheep

+0

@ UnholySheep当使用'WiFi.macAddress()。replace(“:”,“_”)''我得到'无效使用'void'' – dunklesToast

+1

因此,检查[WiFi.macAddress()']的参考(https: //www.arduino.cc/en/Reference/WiFiMACAddress)它甚至不会返回一个字符串,它会返回一个字节数组 - 意味着没有':'来替换那里。你必须自己构建字符串(在这种情况下,你可以决定你想要的分隔符,如果有的话) – UnholySheep

回答

2

只要替换方法是无效的并且替换字符,您需要在操作之前将MAC变为变量。

String MAC = WiFi.macAddress(); 
MAC.replace(':', '_'); 
Serial.println(MAC); 
+0

不会像字符串一样强制转换,因此需要'WiFi.macAddress()。toString()'来获得冒号? – dandavis

+0

扩大陈述对初期人士更有帮助。但实际上我不确定使用toString的macAddr。我相信在运算符重载字符串:) – cagdas

+0

我问,因为在JS中,'字符串(x)'调用'x.toString'; ardiuno是一样的吗? – dandavis