我目前有一个在头中定义的函数,看起来像这样
void foo::GetValue(std::string& str);
字符串
这个函数基本上给str
赋值。我需要想出一个str
的替代方案(基本上,没有使用标准库的东西)。
以上函数的实现方式如下:
void foo::GetValue(std::string& str)
{
std::string s = bar.someMethod();
str = s;
}
型
我想知道什么是最好的/最简单的替换头?
我的一个方法是用char*
替换头文件中的std::string
,这样我就可以在头文件中看到这个:
void foo::GetValue(char* str);
型
在实现中,我会有这样的:
void foo::GetValue(char* str)
{
std::string resp = bar.someMethod();
char* c = new char[resp.size() + 1];
std::copy(resp.begin(), resp.end(), c);
c[resp.size()] = '\0';
}
型
上述方法的问题是,很多文件都在调用这个函数,它们需要修改代码。此外,他们还需要释放上述内存。对此我有两个顾虑,那就是这个函数的其他调用者需要做以下两件事
1.将传递给函数的std::string
替换为char*
。
1.使用完char*
后释放它。
这两个项目对我来说似乎非常昂贵,相信其他来电者做。
我能做些什么来解决这个问题有什么建议吗?也许把签名换成别的?我希望调用者仍然传递字符串,但是string.c_str()
是常量char指针。
1条答案
按热度按时间9ceoxa921#
对于这样一个给定的C++函数:
字符串
那么你的等效C代码看起来像这样:
型
从C呼叫时:
型