2016-12-02 63 views
0

嗨即時通訊嘗試計算行數量和字符數量在一個txt文件中,後1個函數計數行(它的工作)字符計數器dosent工作,但如果我獨自使用char計數器。 (我知道我可以將其混合到一個功能,但我有一個更大的問題,這個例子將修復)C++ fstream dosent 1 function(by refrence)

主營:

int main() 
{ 
    ifstream isf("D:\\test.txt", ios_base::in); 
    ofstream osf("D:\\test.txt", fstream::app); 
    //WriteToFile(osf,isf); 
    cout << CountLines(isf)<< endl; 
    cout << CountChar(isf) <<endl; 
    isf.close(); 
    osf.close(); 
    return 0; 
} 

功能:

const int CountLines(ifstream& isf) 
{ 
    int count = 1; 
    char c; 
    while (isf.get(c)) 
    { 
     if (c == '\n') 
      ++count; 
    } 
    return count; 
} 
const int CountChar(ifstream& isf) 
{ 
    int count = 0; 
    char c; 
    while (isf.get(c)) 
    { 
     ++count; 
    } 
    return count; 
} 

txt文件:

abc 
abc 

輸出:

2 
0 
Press any key to continue . . . 

和輸出應該是

2 
7 
Press any key to continue . . . 

回答

1

你必須調用函數一日後,流至起始位置復位:

cout << CountLines(isf)<< endl; 
isf.clear(); // Reset stream states like eof() 
isf.seekg(0); // <<<<<<<<<<<<<<<<<< 
cout << CountChar(isf) <<endl; 
+0

它仍然dosent工作 – Rokni

+0

@Rokni如何_「它不工作「_具體?也許增加一個'isf.clear()'可能有助於完全重置流狀態。 –

+0

它不工作,但當我改變它們的順序它確實。 il編輯你的文章並將其標記爲答案謝謝你只需要查看編輯:) – Rokni