2016-09-12 4 views
0

텍스트 파일에서 특정 줄을 찾은 다음 해당 파일의 다음 3 줄을 읽는 C++ 프로그램을 만들려고합니다. 하지만이 프로그램은 같은 줄을 세 번 보여 주면서 끝을 맺고 있습니다.이 문제를 해결할 수있는 방법은 무엇일까요? 여기 내 코드 - 여기파일에서 다음 줄을 읽는 데 문제가 있습니다.

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    ifstream file("file.txt"); 
    string line; 
    int iffound=0; 
    string inp; 

    cin>>inp; 
    cout << "You have searched for " << inp << endl; 

    while (file.good()) 
    { 
     getline(file,line); 
     if(line==inp){ 
      iffound=1; 
      cout << "Contact Found!" << endl; 
      for(int i=0;i<=2;i++){ 
       cout << line; 
      } 
      break; 
     } 
    } 
    file.close(); 

    if(iffound!=1){ 
     cout << "Contact Not Found" << endl; 
    } 
    return 0; 
} 

내 텍스트 파일 (file.txt를) 그럼 당신은 당신이 당신의 선두로부터 발견하는 경우 getline 다음과 같은 두 줄을 읽는되지 않습니다

123456 
User1 
Available 
Active 

789456 
User2 
Not Available 
Active 
+2

음, 라인을 찾으면 같은 변수를 반복해서 인쇄하는 for 루프가 있습니다. 컴퓨터는 불행히도 원하는 작업 대신 항상 수행 할 작업을 수행합니다. –

+1

[FYI]'while (file.good()) '를 사용하지 마십시오. 그것은 'while (file.eof())'과 같습니다 : http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – NathanOliver

+0

대신 무엇을 사용해야합니까? ** while (file.good()) **? –

답변

1

귀하의 내부 루프, 그것은 단지 그것을 더 이상 읽기 인쇄하지 않습니다 3 회에 getline 누락 : 더 라인을 읽는 유지하는 코드를 원하는 경우

    for(int i=0;i<=2;i++){ 
        cout << line; 
       } 

을 수행해야 그 루프 안에도 읽으십시오 :

    for(int i=0;i<=2;i++){ 
        getline(file,line); 
        cout << line; 
       } 
+0

예를 들어 더 잘 이해할 수 있습니다. 내 코드를 으로 바꿔서 –

+0

'for (int i = 0; i <= 2; i ++) { getline (file, line); cout << line << endl; } ' 이 정상적으로 작동합니다. 감사! –

1

이입니다. 기본적으로, 당신은 당신의 for

+0

'for (int i = 0; i <= 2; i ++) { getline (file, line); cout << line; }'이제 제대로 작동합니다. 감사! :) –

관련 문제