我有这个问题,需要真正快速解决。这是我的代码:
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;
在第一次迭代后,没有任何内容到达流,尽管temp有值
我甚至可能会说它是在第二次迭代之后,因为第一次迭代得到了单词并且没有进入if语句,第二次迭代得到数字并且正确地使用它。下一次迭代可以正确获取临时值,但没有任何内容可以访问流。