C++滥用字符串串联

C++ abuse of string concatenation

本文关键字:字符串 C++      更新时间:2023-10-16

所以在过去的几个月里,我生成了一些代码,也许更多,我使用C++字符串库来连接字符串。像这样:

template< typename T >
string tostr( const T & val ); // implmented wherever
void somelibraryfunction( const char * );
// begin actual code
somelibraryfunction( ( "foo" + tostr( 5 ) ).c_str( ) );

这编译并运行良好。我担心的是,临时创建的字符串在获取其c_str的地址后会被销毁,我只是依赖于读取最近释放但未清除的内存。有什么想法吗?

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