C ++滥用字符串连接

时间:2013-02-14 06:39:42

标签: 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( ) );

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

1 个答案:

答案 0 :(得分:7)

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