gpt4 book ai didi

c++ - stringstream 问题 - vector 迭代器不可取消引用

转载 作者:行者123 更新时间:2023-11-28 08:29:50 24 4
gpt4 key购买 nike

以下代码片段有问题。

它与stringstream“stringstream css(cv.back())”位有关。如果它被注释掉,程序将运行正常。

这真的很奇怪,因为我一直在我的一些程序中得到它,但如果我只是创建一个控制台项目,代码将运行良好。在我的一些 Win32 程序中它会,在一些它不会(然后它会返回“vector iterator not dereferencable”但它会编译得很好)。

如果有任何想法,我们将不胜感激。谢谢!

vector<double> cRes(2);
vector<double> pRes(2);

int readTimeVects2(vector<double> &cRes, vector<double> &pRes){
string segments;
vector<string> cv, pv, chv, phv;
ifstream cin("cm.txt");
ifstream pin("pw.txt");
ifstream chin("hm.txt");
ifstream phin("hw.txt");

while (getline(cin,segments,'\t')) {
cv.push_back(segments);
}

while (getline(pin,segments,'\t')) {
pv.push_back(segments);
}

while (getline(chin,segments,'\t')) {
chv.push_back(segments);
}

while (getline(phin,segments,'\t')) {
phv.push_back(segments);
}

cin.close();
pin.close();
chin.close();
phin.close();

stringstream phss(phv.front());
phss >> pRes[0];
phss.clear();
stringstream chss(chv.front());
chss >> cRes[0];
chss.clear();

stringstream pss(pv.back());
pss >> pRes[1];
pss.clear();
stringstream css(cv.back());
css >> cRes[1];
css.clear();

return 0;
}

最佳答案

这里有两个主要问题。这些问题中的一个或两个都可能导致您遇到的问题。

您在范围之外隐藏名称:

vector<double> cRes(2);
vector<double> pRes(2);

int readTimeVects2(vector<double> &cRes, vector<double> &pRes){

cRes 和 pRes 将成为传递给您的函数的变量,而不是您已演示的全局变量。

在我们能够诊断此问题之前,您需要向我们展示问题发生的调用代码——尽管我想知道您为什么不在这里使用 push_back,


这里还有一个问题:

stringstream phss(phv.front());
stringstream chss(chv.front());
stringstream pss(pv.back());
stringstream css(cv.back());

您没有检查以确保 phv、chv、pv 和 cv 不为空。您上面的 std::getline 完全有可能存在问题,导致它们无法成功完成,而且您传递的文件也完全有可能是空的。

关于c++ - stringstream 问题 - vector 迭代器不可取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667639/

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