Подсчет новых строк в файле

0

Я пытаюсь прочитать количество строк в текстовом файле. Однако мой счетчик не работает. Это из-за сравнения строк?

#include <iostream>
#include <fstream>
#include <string>
using namespace std;



int main()
{
    string line;
    ifstream myFile;
    int temp_height = 0;

    myFile.open("Levels.txt");


    while (!myFile.eof())
    {
        getline(myFile,line);

        if (line == "\n") 
            temp_height++;

    }

    cout<<"\n Newlines: "<<temp_height;
    myFile.close();
}
  • 3
    Вы имеете в виду пустые строки?
  • 0
    Помимо использования eof, как плохого, если вам нужны новые строки, сравнение неверно, если вы хотите пустые строки, сравнивайте для пустых строк.
Показать ещё 2 комментария
Теги:
string

1 ответ

2
Лучший ответ

Изменить:

while (!myFile.eof())
{
    getline(myFile,line);

в

while (getline(myFile, line))
{

Это означает, что вы на самом деле читаете перед проверкой, а также проверяете наличие других сбоев. Вы почти никогда не хотите проверять eof, это, вероятно, не работает так, как вы ожидаете.

Изменение: Хорошо, вам нужны пустые строки. getline сбрасывает символ '\n', поэтому проверьте

if (line.empty())

для конечного цикла:

while (getline(myFile, line))
{
    if (line.empty())
        ++temp_height;
}

Здесь вы можете найти документацию для std::getline.

  • 0
    Я пытаюсь подсчитать количество пустых строк - я предположил, что я должен искать новые строки?
  • 0
    Не стоит предполагать, посмотрите на getline и выясните, что он на самом деле делает.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню