gpt4 book ai didi

c++ - 当字符串超出范围时,将 string::c_str() 分配给 const char*

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:36 26 4
gpt4 key购买 nike

我对基本的 C++ 用法有疑问。下面的代码使用 gcc/LInux 编译,打印正确。

字符串 test 超出范围,所以它的 c_str() 值也应该无效,不是吗?我错了还是我误解了 const char* 的意思?

   #include <iostream>
int main(){
const char* a = "aaaa";
std::cout << a;
{ std::string test("bbbb");a=test.c_str();}
std::cout << a;
a = "cccc";
std::cout << a;
}


aaaabbbbcccc
// print out without any problem

最佳答案

你是对的,你的代码无效,因为它使用了一个生命周期已经结束的对象。它是“偶然”起作用的,你不能依赖它。

关于c++ - 当字符串超出范围时,将 string::c_str() 分配给 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8120312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com