函数foo()
收到一个const char *
作为其参数,就像strlen()
void foo(const char *p);
现在我有一个std::string s = "some characters"
。如果我打电话
foo(s.substr(1, 2).c_str());
substr
对象的寿命是多少?它将保留直到函数返回?我担心如果在substr
进入之前foo()
被销毁,它将是无用的。
答案 0 :(得分:0)
如果选中std::string::substr,该函数将返回一个新构造的字符串对象,其值初始化为该对象的子字符串的副本。因此它将一直有效直到foo()
返回,并且在输入foo()
之前不会被销毁。