2017-02-20 6 views
1

여기는 필자가 작성한 프로그램 중 불완전한 부분이 있습니다. 요약하면, 프로그램은 입력 파일 (이름과 일련 번호로 된 ID)에서 정보를 취하여 수학을 수행 한 다음 출력 파일에 해답을 인쇄합니다. 지금 프로그램은 이름과 ID를 인쇄 한 다음 번호를 반복해서 인쇄합니다. 파일의 다음 줄로 이동 C++

교수는 내가의 getline을 사용해야하지만 나던 날

do 
{ 
    infile >> name >> Id; 
    cout<< name << Id << std::endl; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
} 
while(!infile.eof()); 
에 어떤 의미가 있다고

을 통해 나는, 다음 줄로 이동 이름과 ID를 인쇄하고 파일이 될 때까지 반복하고 싶습니다

입력 :

 
Morgan 12388671 100 100 100 
John 67894 100 100 100 

출력 :

 
Vagts,Morgan 
100100 
100100 
100100 
100100 
100100 
(300,000 more times) 

업데이트 :

do 
{ 
    while (getline (infile, line)) 
    { 
    istringstream iss(line); 
    iss >> name >> Id; 
    cout<< name << Id; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
    } 
} 

while (! infile.eof());

+1

줄의 모든 데이터를 * 모든 * 읽지 않는 이유는 무엇입니까? 그리고 그것을 원하지 않는다면 한 번에 한 줄씩 읽으려면 ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline)을 사용하지 않으시겠습니까? –

+0

이전에 시도했지만 작동하지 않았습니다. 아마 잘못했을거야. 나에게 손을 줄 수 있니? – Morgan

+0

간단하다.'while (std :: getline (infile, line)) {/ * std :: istringstream에 줄을 긋고 그 문자열에서 데이터를 추출한다. * /}' –

답변

2

사용 의 getline (INFILE "문자열 변수") 다음 줄을 읽는 동안 가끔 너무 cin.ignore를 사용 읽을 다음 문장으로 "최종 라인"필요하기 때문에 가끔 오류가 발생할 수 있습니다 GET 줄을 사용하여

();은 getline 문 앞이나 뒤에 가장 적합한 곳에 따라 달라집니다.

+0

감사의 말을 전했습니다! – Morgan

+0

@Morgan 당신은 환영합니다 :) –