首页 > 解决方案 > 我有一个文本文件,每行包含一个整数。我想打开文本图块并计算文件中的整数个数

问题描述

void DataHousing::FileOpen() {
    int count = 0;
    // attempt to open the file with read permission
    ifstream inputHandle("NumFile500.txt", ios::in);

    if (inputHandle.is_open() == true) {
        while (!inputHandle.eof()) {
            count++;
        }

        inputHandle.close();
    }

    else {
        cout << "error";
    }

    cout << count;

}

这陷入了while循环。但是当它到达文件末尾时,while循环不应该结束吗?另外,我什至不确定它是否正确计数。

标签: c++oopfile-io

解决方案


一个相当简单的方法是改为使用std::cin。假设您想计算文件中的整数个数,您可以使用 while 循环,如下所示:

int readInt;
int count = 0;
while(std::cin >> readInt){
    count++;
}

然后,您只需将文件作为参数参数传递给您的可执行文件,如下所示:

exec < filename

如果您更喜欢通过您要走的路线,那么您可以将您的 while 循环条件替换为!inputHandle.eof() && std::getline(inputHandle, someStringHere)Then 继续检查是否someStringHere是 int 并增加您的计数,如果是这样:

int count = 0;
std::string s;

ifstream inputHandle("NumFile500.txt", ios::in);

if (inputHandle.is_open() == true) {
        while (!inputHandle.eof() && std::getline(inputHandle, s)) {
            if(check to see if it's a number here)
                count++;
        }

        inputHandle.close();
}



推荐阅读