gpt4 book ai didi

c++ - 字符串转char*函数

转载 作者:太空狗 更新时间:2023-10-29 19:47:39 24 4
gpt4 key购买 nike

对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com