2017-02-20 68 views
1

這裏是一個程序,我寫的不完整的部分。總而言之,程序從輸入文件(名稱和ID然後是一系列數字)中獲取信息,然後將輸出文件打印出來。現在程序打印名字和ID,然後一遍又一遍地打印數字。我想它移動到下一行,打印的姓名和ID,並重復,直到該文件是在移動到下一行的文件C++

教授說,我應該使用函數getline,但那不作出任何意義,我

do 
{ 
    infile >> name >> Id; 
    cout<< name << Id << std::endl; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
} 
while(!infile.eof()); 

輸入:

 
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

很簡單:'而(的std ::函數getline(infile中,線)){/ *在的std :: istringstream放線,並從該字符串流*提取數據/}' –

回答

2

使用函數getline(infile的「字符串變量」)

使用GET線而讀下一行的某個時候可能會導致錯誤,因爲它有時以「高端路線」作爲下一個語句讀這麼使用cin.ignore ();您的getline語句之前或之後取決於它對您最適合的位置。

+0

這工作謝謝你! – Morgan

+0

@Morgan歡迎您:) –