以整数作为输入时,麻烦检查换行符

问题描述 投票:0回答:1

我正在为我的一个班级做一个小项目,涉及从文件中获取格式化的输入,并且在检测换行符时遇到了麻烦。这是我正在使用的功能:

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变量是否等于字符,最好是换行符。我在行尾注入一个怪异整数的方法有效,但我不喜欢它。

抱歉,如果此代码太可怕或这个问题很愚蠢,我是一个初学者,我希望这是好的代码。预先感谢!

c++ vector stream
1个回答
0
投票

功能std::getline()可以用于此。它将输入行读入字符串。然后,您可以使用该字符串解析所有整数。

要解析整数,您可以使用std::getline(),其作用类似于std::istringstream,但它使用字符串作为源而不是控制台。

std::istringstream
© www.soinside.com 2019 - 2024. All rights reserved.