gpt4 book ai didi

c++ - 从函数返回一个 const char*

转载 作者:行者123 更新时间:2023-11-28 00:30:54 25 4
gpt4 key购买 nike

我必须替换一些字符数组代码。所以说我有一个类有一个 std::string 成员变量。

class foo
{
private:
std::string _sBar;

public:
const char* getBar() const { return _sBar.c_str(); }
};

现有代码要求在字符串访问器函数中返回 const char*,因此我无法返回 const std::string 引用。

但不是有一些规则表明当堆栈展开时您不能再相信 _sBar.c_str() 的返回值吗?

最佳答案

是的,没错。如果你要求调用者提供一个固定大小的缓冲区更好,调用者分配为:

const int MAX = 1000; // choose some suitable value
char buff[MAX];

调用者有一个 foo 对象,

foo a;

...

a.getBar(buff, MAX);

...

然后您将 getBar 定义为:

 void getBar(char *buffer, int size) const { 
strncpy(buffer, _sBar.c_str(), size -1);
buffer[size -1] = 0;
}

关于c++ - 从函数返回一个 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22988990/

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