【发布时间】:2021-11-14 17:56:53
【问题描述】:
char* convert()
{
std::string data = "stack\0over\0flow";
return data.c_str();
}
这将返回指针,并在调用者上从它构建字符串时,它将具有 stack 而不是完整的字符串。在 c++ 11 中是否有不改变输入和返回类型的解决方法? 我想从 char* 重建调用方的整个字符串。
【问题讨论】:
-
小心:
data超出范围将被销毁。因此,如果返回类型是指针,您的代码将返回一个悬空指针。 -
哦等等 - 你是对的。 eerorika 下面的回答是最好的指导。
-
@vmario 有点正确,它返回完整的数据字符串——只是如果你想在中间包含 NUL,你必须以不同的方式构造 std::string。
-
当你得到一个 char* 时你想做什么,你丢失了原始字符串长度的所有信息并且你不能循环直到终止零。这不会有用。