对 c/c++ 很陌生。我对以下代码有疑问:
char* string2char(String command){
if (command.length() != 0) {
char *p = const_cast<char*>(command.c_str());
return p;
}
}
void setup() {}
void loop() {
String string1 = "Bob";
char *string1Char = string2char(string1);
String string2 = "Ross";
char *string2Char = string2char(string2);
Serial.println(string1Char);
Serial.println(string2Char);
}
这基本上是重复输出:
Ross
Ross
我明白我没能理解指针在这里是如何工作的概念——有人能解释一下吗?我将如何更改它以便它可以显示:
Bob
Ross
最佳答案
这个函数:
char* string2char(String command){
if (command.length() != 0) {
char *p = const_cast<char*>(command.c_str());
return p;
}
}
没有多大意义,它按值获取字符串并返回指向其内部缓冲区的指针,并用 cased away constnes(不要这样做)。当你返回已经被销毁的对象的值时,你会得到一些奇怪的行为,通过 ref 传递它。我也很好奇为什么你需要做所有这些事情,你不能直接通过:
Serial.println(string1.c_str());
Serial.println(string2.c_str());
关于c++ - 字符串转char*函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414164/