c ++ fstream dosent在1个函数之后工作(通过参考)

时间:2016-12-02 16:52:19

标签: c++ file iostream fstream

嗨我试图计算一个txt文件中的行数和字符数量,在1个函数计算行(它工作)后,char计数器剂量工作,但如果我单独使用char计数器它的工作原理。 (我知道我可以将它混合到一个函数中,但我有一个更大的问题,这个例子将修复)

主:

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 个答案:

答案 0 :(得分:1)

调用第一个函数后,您必须将流重置为起始位置:

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