gpt4 book ai didi

c++ - 添加冒号 ( :) to an unsigned char in C++

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:43 24 4
gpt4 key购买 nike

我正在编写一个 Arduino 库,用于使用串行馈送在 Arduino 和计算机之间进行简单的数据传输。我已经创建了库等。但是,我在使用 char 数组并向其添加冒号 (':') 时遇到了问题。也就是说,

//Sends data via println()
void simpleTransfer::sendData(char *name, char *data){
char *str = name + ": " + data + ",";
_serial->println(str); //Sends in form 'name: data,'
}

这应该采用我要发送的变量的名称,添加一个冒号和一个空格,然后是我要发送的数据,最后是一个逗号。但是,我反而收到错误消息:

invalid operands of types 'char*' and 'const char [3]' to binary 'operator+'

这是什么原因?

最佳答案

简短回答:使用 std::string 创建连接字符串。

 std::string s = ((std::string(name) + ": ") + data) + ",";
_serial->println( s.c_str() );

长答案:当连接 C 风格的字符串时,您需要一个足够大的目标缓冲区来容纳结果。如果您知道结果可以达到的最大大小,则可以声明该大小的本地数组,并使用 sprintf 正如其他答案所解释的那样。

或者,如果你事先不知道大小,你可以使用 strlennew[] 的组合来分配一个动态大小的缓冲区,做打印,然后 delete[] 缓冲区。但是不要这样做!请改用字符串类,std::string,或者如 Drew Dormann 在下面的评论中提到的,Arduino 特定的 String 类。

关于c++ - 添加冒号 ( :) to an unsigned char in C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931690/

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