加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 字符串到char *函数

发布时间:2020-12-16 10:14:46 所属栏目:百科 来源:网络整理
导读:c / c的新手.我对以下代码有疑问: char* string2char(String command){ if (command.length() != 0) { char *p = const_castchar*(command.c_str()); return p; }}void setup() {}void loop() { String string1 = "Bob"; char *string1Char = string2char(s
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());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读