C++滥用字符串连接

Sco*_*ott 2 c++ string

所以我在最近几个月生成了一些代码,可能更多,我使用C++字符串库来连接字符串.像这样:

template< typename T >
string tostr( const T & val ); // implmented wherever

void somelibraryfunction( const char * );

// begin actual code

somelibraryfunction( ( "foo" + tostr( 5 ) ).c_str( ) );
Run Code Online (Sandbox Code Playgroud)

这编译并正常工作.我担心的是,创建的字符串临时在c_str被占用的地址被销毁之后被破坏,而我只是依赖于读取最近释放但未清除的内存.有什么想法吗?

Rob*_*edy 7

在整个语句完成之前,临时字符串不会被销毁,直到库函数返回之后.只要该函数不在某处保存该地址的副本供以后使用,您的代码就可以了.(存储字符串内容的副本很好;它只是不应该存储char*指针值,当临时字符串消失时它变为无效.)