gpt4 book ai didi

c++ - 流不按预期工作

转载 作者:行者123 更新时间:2023-11-28 06:57:50 26 4
gpt4 key购买 nike

我遇到了这个问题,需要快速解决。这是我的代码:

    void stypendium() {
string tresc = "";
string temp;
stringstream ss;
fstream file;
vector<float> grades;
float grade, sum, av;
file.open(this->plik, ios_base::in);
if(!file.is_open()) {
ofstream fileTmp(this->plik);
fileTmp.close();
file.open(this->plik, ios_base::in);
}
while (file >> temp) {
if(strspn( temp.c_str(), "-.0123456789" ) == temp.size()) {
ss.str("");
ss << temp;
ss >> grade;
grades.push_back(grade);
}
};
sum = 0;
for(int i=0;i<grades.size();++i) {
sum += grades[i];
}
av = sum / grades.size();
cout << sum << "/" << grades.size() << "=" << av;
file.close();
}

};

问题是行

ss << temp;


尽管临时值有值(value),但没有任何内容进入流;

最佳答案

使用 ss.clear() 成员函数为第一个和后续的成绩值正确准备字符串流。这是引用:std::basic_ios::clear。请记住,clear() 可能会引发异常。


根据最近的源代码编辑,while 循环体与以前几乎相同。

 while (file >> temp) {
if(strspn( temp.c_str(), "-.0123456789" ) == temp.size()) {
ss.str("");
//
// Call the clear() member function here
//
ss.clear();
ss << temp;
ss >> grade;
grades.push_back(grade);
}
};

一个简单的测试文件,具有逐行的等级值,每一行都获得一次,以及最后一个输入文件的等级值仅被添加到等级 vector 一次。

关于c++ - 流不按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22933580/

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