问题描述
首先,感谢您抽出宝贵的时间来帮助我。
我正在使用Arduino,事情是我需要在函数上返回const char *。
我需要做的是创建一个字符串并将响应发送回去。 类似的事情不起作用:
...
String myVar= "Return Message";
return RPC_Response(myVar);
}
这不起作用,字符串似乎已被删除。由于我只得到一个空白的答复:
...
const char* ch = new char;
String myVar= "Return Message";
ch = myVar.c_str();
return RPC_Response(ch);
}
但是它仅在以下情况下才有效:(但是我需要动态创建一个String ...)
. .
char *msg1 = "Return Message";
return RPC_Response(chmsg1);
}
或者类似这样的东西:
. .
return RPC_Response("Return Message");
}
请...!我该怎么办?
解决方法
首先,您可以将代码简化为以下内容:
std::string myVar= "Return Message";
return RPC_Response(myVar.c_str());
但这不会起作用,因为c_str()
的结果在修改字符串(包括被破坏的字符串)时会失效。
使用字符串文字的原因是因为字符串文字是全局存储的。 (它实际上是实现定义的,但通常是这样做的)
// storing it in a char* variable first is equivalent
return RPC_Response("Return Message");
假设RPC_Response
仅接受C字符串,您可以这样做:
#include <string.h>
...
std::string myVar = "Return Message";
char* str = strdup(myVar.c_str());
return RPC_Response(str);