微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 字符串到char *函数

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;
    }
}

没有多大意义,它按值获取字符串并返回指向其内部缓冲区的指针,并且使用了constnes(不要这样做).当你返回已经被破坏的对象的值时,你会得到一些奇怪的行为,通过ref传递它.另外我很好奇为什么你需要做所有这些事情,你不能只是通过:

Serial.println(string1.c_str());
Serial.println(string2.c_str());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐