assigning string::c_str() to a const char* when the string goes out of scope(当字符串超出范围时将 string::c_str() 分配给 const char*)
问题描述
我对基本的 C++ 用法有疑问.下面的代码,用 gcc/LInux 编译,打印正确.
I have a doubt on basic C++ usage. The code below, compiled with gcc/LInux, prints out correctly.
字符串 test
超出范围,所以它的 c_str()
值也应该是无效的,不是吗?我错了还是我误解了 const char*
的含义?
The string test
goes out of scope so also its c_str()
value should be invalid isn't it? Am I wrong or do I have misunderstood the const char*
meaning?
推荐答案
你是对的,你的代码是无效的,因为它使用了一个生命周期已经结束的对象.它偶然"起作用,你不能依赖它.
You're right, your code is not valid since it uses an object whose lifetime has already ended. It works "by accident", you cannot rely on that.
这篇关于当字符串超出范围时将 string::c_str() 分配给 const char*的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!