gpt4 book ai didi

c++ - 字符串流的段错误

转载 作者:太空狗 更新时间:2023-10-29 20:06:42 24 4
gpt4 key购买 nike

这是我的功能:

string GaugeStr;
void someFunction() {
float pie = someFloat();
stringstream ss (stringstream::in | stringstream::out);
ss << pie;
GaugeStr = ss.str();
}

当我运行该函数时,它可以正常工作。但是,当我第二次调用它时 (someFunction(); someFunction();,然后我的程序因段错误而崩溃。

我尝试将 stringstream ss (stringstream::in | stringstream::out); 放在函数之外,使其成为一个全局变量,但我想将内容发送到 GaugeStr 附加到 ss。例如,如果我们假设 someFloat() 总是返回 1.2,那么我第二次运行该函数时,GaugeStr 设置为 1.21.2.

因此,我在函数中插入了 ss.str(""),但程序再次崩溃并出现段错误。

如何将 someFloat() 的值 GaugeStr 作为没有段错误的字符串?

精确函数

void CPU_BenchmarkFrame::OnButton1Click(wxCommandEvent& event) {
float pie = PiAlgo (Gauge2);
stringstream ss (stringstream::in | stringstream::out);
ss << pie;
wxMessageBox(_("Alert"), _("Sample Alert")); //To test where the segfault happens
string GaugeStr = ss.str();

wstring GaugeWid;
std::copy(GaugeStr.begin(), GaugeStr.end(), GaugeWid.begin());

StaticText2->SetLabel(GaugeWid);
}

更多编辑

问题是这里的一行或多行:

    wstring GaugeWid;
std::copy(GaugeStr.begin(), GaugeStr.end(), GaugeWid.begin());

StaticText2->SetLabel(GaugeWid);

当我评论它们时,脚本正常工作。

最佳答案

这行不通

std::wstring GaugeWid;
std::copy(GaugeStr.begin(), GaugeStr.end(), GaugeWid.begin());

GaugeWid 没有大小时。而且它也不转换字符。

如果你想要一个宽字符串,使用一个wstringstream

关于c++ - 字符串流的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581293/

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