C++ Getline没有';当我使用计数功能时,它不工作

C++ Getline没有';当我使用计数功能时,它不工作,c++,C++,我找不到有关这方面的信息,为什么我在第一次运行count函数时无法从Test.txt打印详细信息 但当我尝试用While循环切换count函数时,它工作了,但程序无法再打印行计数 问题 void ReadDataFromFileLBLIntoCharArray() { ifstream fin("Test.txt"); const int LINE_LENGTH = 100; char str[LINE_LENGTH]; cout << count(s

我找不到有关这方面的信息,为什么我在第一次运行count函数时无法从Test.txt打印详细信息

但当我尝试用While循环切换count函数时,它工作了,但程序无法再打印行计数

问题

void ReadDataFromFileLBLIntoCharArray()
{
    ifstream fin("Test.txt");
    const int LINE_LENGTH = 100;
    char str[LINE_LENGTH];
    cout << count(std::istreambuf_iterator<char>(fin),std::istreambuf_iterator<char>(), '\n') << endl;
    cout << "GG" << endl;
    while( fin.getline(str,LINE_LENGTH) )
    {
        cout << "Read from file: " << str << endl;
    }
}
void readdatafromfilelblintocharray()
{
ifstream fin(“Test.txt”);
const int LINE_LENGTH=100;
字符str[行长度];

cout在这两种情况下,您试图读取文件内容两次,为此,您需要:

  • 清除
    ifstream
    的错误状态
  • 倒带
    ifstream
  • void readdatafromfilelblintocharray()
    {
    ifstream fin(“Test.txt”);
    const int LINE_LENGTH=100;
    字符str[行长度];
    
    这有一个比我想输入的更优雅的答案吗?.TL:DR,
    fin
    会根据您首先执行的逻辑迭代到文件末尾。
    void ReadDataFromFileLBLIntoCharArray()
    {
        ifstream fin("Test.txt");
        const int LINE_LENGTH = 100;
        char str[LINE_LENGTH];
    
        cout << "GG" << endl;
        while( fin.getline(str,LINE_LENGTH) )
        {
            cout << "Read from file: " << str << endl;
        }
        cout << count(std::istreambuf_iterator<char>(fin),std::istreambuf_iterator<char>(), '\n') << endl;
    }
    
    void ReadDataFromFileLBLIntoCharArray()
    {
        ifstream fin("Test.txt");
        const int LINE_LENGTH = 100;
        char str[LINE_LENGTH];
        cout << count(std::istreambuf_iterator<char>(fin),std::istreambuf_iterator<char>(), '\n') << endl;
        cout << "GG" << endl;
    
        // Add these lines
        fin.clear();
        fin.seekg(0); // rewind
    
        while( fin.getline(str,LINE_LENGTH) )
        {
            cout << "Read from file: " << str << endl;
        }
    }
    
    
    void ReadDataFromFileLBLIntoCharArray()
    {
        ifstream fin("Test.txt");
        const int LINE_LENGTH = 100;
        char str[LINE_LENGTH];
    
        cout << "GG" << endl;
        while( fin.getline(str,LINE_LENGTH) )
        {
            cout << "Read from file: " << str << endl;
        }
    
        // Add these lines
        fin.clear();
        fin.seekg(0); // rewind
    
    
        cout << count(std::istreambuf_iterator<char>(fin),std::istreambuf_iterator<char>(), '\n') << endl;
    }