Я пытаюсь прочитать количество строк в текстовом файле. Однако мой счетчик не работает. Это из-за сравнения строк?
#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();
}
Изменить:
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
.