我必须写一个函数(c++),它的定义是:
const char* getFileName(const char* name);
简而言之,此函数将获取名称、检查一些条件并为其附加一个后缀,使其成为一个正确的文件名。例如:
此函数返回的name = "someFile", return = "someFile-hd.png"
const char*
将立即传递给另一个以const char*
作为参数的函数
something->loadFile(getFileName("someFile"));
我遇到的问题是,当我在我的函数中创建一个 const char*
时,它的范围将限于创建它的函数。另一方面,我不能修改 loadFile
函数的代码,因为它是我正在使用的第 3 方库。
我可以围绕 loadFile
编写一个包装器来删除我创建的 const char*
,但我不想那样做,因为这是一个移植练习这会破坏我为简化操作而创建的一些模板。
有没有办法像我描述的那样编写这个函数?
谢谢
编辑: 小解释:
getFileName
是我正在尝试编写的函数,我可以更改返回类型,但它必须适合作为 loadFile
函数的参数。我的主要问题是 getFileName
返回的 const char*
要么因为超出范围而丢失,要么我必须明确删除它,这会破坏我的移植模板。我想在一个函数调用中生成文件名并且不做任何其他事情 [换句话说,在原始代码中我有 loadFile("something.png")
并且我想将它更改为 loadFile(getFileName("something"))
之后不添加任何新行。
最佳答案
如果您可以将 getFileName()
的返回类型更改为 std::string
,您可以执行以下操作:
std::string getFileName(const char* a_name)
{
std::string result(a_name);
result += ".png";
return result;
}
// No memory management req'd
something->loadFile(getFileName("someFile").c_str());
关于c++ - 如何编写返回 const char* 的函数,这是一个修改后的 const char* 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158488/