从函数返回 const char* 的问题
Problems returning const char* from function
首先,感谢您花时间帮助我。
我正在研究 Arduino,问题是我需要 return 函数上的 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);
}
但它只有在我这样做时才有效:(但我需要动态创建一个字符串...)
. .
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-strings,你将不得不这样做:
#include <string.h>
...
std::string myVar = "Return Message";
char* str = strdup(myVar.c_str());
return RPC_Response(str);
首先,感谢您花时间帮助我。
我正在研究 Arduino,问题是我需要 return 函数上的 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);
}
但它只有在我这样做时才有效:(但我需要动态创建一个字符串...)
. .
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-strings,你将不得不这样做:
#include <string.h>
...
std::string myVar = "Return Message";
char* str = strdup(myVar.c_str());
return RPC_Response(str);