我的问题如下:
const char*
output
的出现位置并将其替换为input
const char*
(要更改的代码太多以用std::string
替换它)我想要做的是以下
string name(filename); //filename is the "const char*" provided by the caller of the function
string portion("output");
name.replace(name.find(insert),insert.length(),"input");
const char* newfilename = (char*)name.c_str();
现在,我的问题:
感谢任何有帮助的人。
费德里科
答案 0 :(得分:3)
这会有效,但您不需要name.c_str()
上的演员表(事实上,这是错误的:c_str()
returns a const char *
)。
但是,只要您修改name.c_str()
,或name
超出范围,您从name
获得的指针就会失效。因此,请不要尝试从函数返回newfilename
。
如果你需要它来保持,你别无选择,只能动态分配内存。标准做法是使用智能指针自动管理deallocation.const char *,你别无选择,只能自己管理。所以你可以这样做:
char *newfilename = new char[name.length() + 1];
strcpy(newfilename, name.c_str());
return newfilename;
...
delete [] newfilename;
<小时/> *嗯,标准做法是使用
std::string
!如果您需要与传统的C API接口,那只会变得棘手。