2013-11-21 2 views
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

빈 줄입니까? – BoBTFish

+0

eof를 사용하는 것 외에도, 개행을 원할 경우 비어있는 행을 원하면 비어있는 행을 비교하기 위해 비교가 잘못되었습니다. – PlasmaHH

+0

빈 줄 또는 모든 줄? 아, 빈 줄 ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline)은 빈 문자열을 반환합니다. 분리 문자 (기본적으로 개행 문자)를 문자열에 추가하지 않습니다. –

답변

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 here에 대한 문서를 찾을 수 있습니다.

+0

빈 라인의 수를 계산하려고한다. 나는 새로운 라인을 찾아야한다고 생각했다? – user1816546

+0

추측하지 말고, getline을 찾아보고 실제로 무엇을하는지 알아보십시오. – john

+0

의견을 보내 주셔서 감사합니다 : D 조 지금 작동 - 왜 우리 앞에 ++ 대신 temp_height 앞에 ++ 추가 할 수 있습니까? – user1816546

관련 문제