gpt4 book ai didi

c++ - 保存 ostringreader.str().c_str()

转载 作者:行者123 更新时间:2023-11-30 00:38:37 25 4
gpt4 key购买 nike

为什么这段代码中读出y后text1的值发生了变化?

void func()
{
int value1 = 5;
double value2 = 1.5;
std::ostringstream x, y;

x << value1;
y << value2;


const char *text1 = x.str().c_str();
fprintf(stderr, "text1: v=%s, p=%p\n", text1, &text1);
const char *text2 = y.str().c_str();
fprintf(stderr, "text1: v=%s, p=%p\ntext2: v=%s, p=%p\n", text1, &text1, text2, &text2);
}

输出:

text1: v = 5, a = 0xbfcfd508

文本 1:v = 1.5,a = 0xbfcfd508

文本 2:v = 1.5,a = 0xbfcfd510

最佳答案

在计算完 str().c_str() 表达式后,调用 str()< 创建的临时 std::string 实例 被释放,你的 char 指针指向 Nirvana。你需要存储str()的返回值!

关于c++ - 保存 ostringreader.str().c_str(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315974/

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