我正在为我的一个班级做一个小项目,涉及从文件中获取格式化的输入,并且在检测换行符时遇到了麻烦。这是我正在使用的功能:
void averager(vector<double> &outvec)
{
ifstream temp;
vector<int> tempvec;
double average;
temp.open("temp.dat");
int num;
while (! temp.eof())
{
temp >> num;
if (num != 9999)
tempvec.push_back(num);
else if (num == 9999)
{
average = accumulate(tempvec.begin(), tempvec.end(), 0.0) / tempvec.size();
outvec.push_back(average);
tempvec.clear();
}
}
temp.close();
return;
}
我正在从一个包含整数集的临时文件中获取输入,在这种情况下,测试分数由空格分隔,以整数9999
作为定界符。当它到达定界符时,它将停止对整数进行平均,将新数字放入向量outvec
中,然后在下一行再次开始。
我只想使用'\n'
字符作为分隔符,但似乎无法检查num
变量是否等于字符,最好是换行符。我在行尾注入一个怪异整数的方法有效,但我不喜欢它。
抱歉,如果此代码太可怕或这个问题很愚蠢,我是一个初学者,我希望这是好的代码。预先感谢!
功能std::getline()
可以用于此。它将输入行读入字符串。然后,您可以使用该字符串解析所有整数。
要解析整数,您可以使用std::getline()
,其作用类似于std::istringstream
,但它使用字符串作为源而不是控制台。
std::istringstream