У меня есть текстовый файл с каждой строкой, содержащей целое число. Я хочу открыть текстовую плитку и посчитать количество целых чисел в файле - PullRequest
0 голосов
/ 02 мая 2020
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;

}

Это застревает в то время как l oop. Но не должно ли время l oop заканчиваться, когда оно доходит до конца файла? Кроме того, я даже не уверен, правильно ли он считает.

1 Ответ

0 голосов
/ 02 мая 2020

Довольно простой способ сделать это - использовать std::cin. Предполагая, что вы хотите посчитать количество целых чисел в файле, вы можете просто использовать некоторое время l oop, например, так:

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

Затем вы просто передаете файл в качестве параметра аргумента для вашего исполняемого файла как Итак:

exec < filename

Если вы предпочитаете go по маршруту, по которому вы идете, вы можете просто заменить условие while l oop на !inputHandle.eof() && std::getline(inputHandle, someStringHere) Затем перейдите к проверьте, является ли someStringHere целым числом, и увеличьте число, если это так:

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();
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...