gpt4 book ai didi

c++ - 使用打开的文件流访问违规阅读位置

转载 作者:行者123 更新时间:2023-11-28 00:27:10 25 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了。但是,就我而言,错误并不总是存在,所以我认为它可能会有所不同。我正在使用 C++、Visual Studio 2013、Windows 7 x64。

相关代码如下:

void writeDATAToFile(const char *fname, string title, const VecDoub& spec_x, const VecDoub& spec_y, const VecDoub& freq)
{
ofstream of;
of.open(fname, ios_base::out);
if (!of.is_open())
{
return;
}
of << "somename" << endl;
of << "WAVES/S" << "\t" << title << endl;
of << "BEGIN" << endl;
for (int i=0; i<spec_x.size(); i++)
{
of << spec_x[i] << "\t\t\t" << spec_y[i] << "\t\t\t" << freq[i]<<endl;
}
of << "END" << endl;
of.close();
}

此函数应该写入光谱数据(在程序的前面计算)并将其写入文件。有些频谱数据不会造成问题,有些会。错误在 for 循环中。这是错误窗口:enter image description here

最佳答案

您将 3 个 vector 传递给您的函数:

const VecDoub& spec_x, const VecDoub& spec_y, const VecDoub& freq

但您永远不会检查它们是否具有相同的大小。

在你的循环中(不是你在问题中所说的“第二个”循环,你发布的代码中只有一个循环),你正在遍历 spec_x 并且你使用相同的索引i 索引到其他两个 vector 。

如果您的其他两个 vector 中的一个或两个的大小小于 spec_x 怎么办?那么您的索引超出范围,这将导致您看到的错误。

关于c++ - 使用打开的文件流访问违规阅读位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24455392/

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