C++ 如何计算输入行数?

C++ 如何计算输入行数?,c++,C++,我需要计算输入文件中的行数,但我的代码无法正常工作: #include <iostream> #include <fstream> using namespace std; int main() { unsigned int number, daliklis; unsigned long long factorial = 1; int lines = 0; std::string str; std::ifstream in

我需要计算输入文件中的行数,但我的代码无法正常工作:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

    unsigned int number, daliklis;
    unsigned long long factorial = 1;

    int lines = 0;
    std::string str;

    std::ifstream input("ardalo.in");
    std::ofstream output("ardalo.out");

    while(std::getline(input, str)) lines++;
    if(lines > 100) {
        cout << "Too many lines.";
        return 0;
    }

    while(input >> number >> daliklis) {
        for(int i = 1; i <= number; i++) factorial *= i;
        if(number * daliklis == factorial) output << "YES" << endl;
        else output << "NO" << endl;
    }

    return 0;
}

问题是,当我使用getline(input,str)时,它总是使我的输出为空。如果不使用字符串,代码可以正常工作。这里有什么问题?

您的代码首先读取文件中的所有行。然后它尝试读取更多内容,但这失败了,因为您无法读取更多内容。您的第二个循环将永远不会执行,因为当您到达那里时,您已经使用第一个循环到达了文件的末尾,您需要在第二个循环之前将“游标”(我忘记了它的官方术语)重置到文件的开头。简而言之,第一个循环停止循环的原因与第二个循环从未实际执行任何操作的原因相同。我建议您使用调试器获取IDE。如果你这样做了,你可能就不需要再问这样的问题了,因为你可以自己回答,节省时间,让你感觉良好:-)调试器是你最好的朋友,数字和dalkilis也是undefined@PatrickSturm它们在main的第一行中声明,在写入之前不会被读取。不知道“未定义”是什么意思
5 24
5 16
10000 65537