📜  C++ 程序的输出 |设置 34(文件处理)

📅  最后修改于: 2022-05-13 01:56:11.075000             🧑  作者: Mango

C++ 程序的输出 |设置 34(文件处理)

  1. 下面的程序执行什么任务?
    #include
    #include
    using namespace std;
      
    int main() 
    {
       ofstream ofile; 
       ofile.open ("text.txt"); 
       ofile << "geeksforgeeks" << endl;
       cout << "Data written to file" << endl;
       ofile.close(); 
       return 0;
    }
    

    回答:

    The program prints "geeksforgeeks" in the file text.txt
    

    说明:当为 ofstream 类创建对象时,它允许我们像 cout 一样写入文件。当使用 ofstream 对象打开文件时,如果文件存在,则内容将被删除,否则将被创建。

  2. 下面的程序执行什么任务?
    #include
    #include
    using namespace std;
      
    int main() 
    {
        char data[100]; 
        ifstream ifile; 
          
        //create a text file before executing.
        ifile.open ("text.txt"); 
        while ( !ifile.eof() ) 
        { 
            ifile.getline (data, 100); 
            cout << data << endl; 
        }
        ifile.close();
        return 0;
    }
    

    回答:

    The program takes input from text.txt file and then prints on the terminal.
    

    描述:当为 ifstream 类创建对象时,它允许我们像 cin 一样从文件中输入。 getline 一次获取整行。



  3. 以下程序的输出是什么?
    #include
    #include
    #include
    #include
      
    using namespace std;
      
    int main() 
    {
          
        ifstream ifile; 
        ifile.open ("text.txt"); 
        cout << "Reading data from a file :-" << endl ;
        int c = ifile.peek();
        if ( c == EOF ) return 1;
        if ( isdigit(c) )
        {
            int n;
            ifile >> n;
            cout << "Data in the file: " << n << '\n';
        }
        else
        {
            string str;
            ifile >> str;
            cout << "Data in the file: " << str << '\n';
        }
        ifile.close();
        return 0;
    }
    

    输出:

    Reading data from a file:-
    Data in the file:
    /*content of the file */
    

    说明: peek() 获取输入流中的下一个字符,但不将其从该流中删除。该函数通过首先构造一个对象来访问输入序列。然后,它通过调用其成员函数sgetc 从其关联的流缓冲区对象(ifile)中读取一个字符,并最终在返回之前销毁该对象。

  4. 运行代码后文件内容会有哪些变化?
    #include 
    #include    
    using namespace std;
      
    int main () 
    {
        //create a text file named file before running.
        ofstream ofile;
        ofile.open ("file.txt");
          
        ofile<< "geeksforgeeks", 13;
        ofile.seekp (8);
        ofile<< " geeks", 6;
          
        ofile.close();
          
        return 0;
    }
    

    输出:

    content of file before:
    geeksforgeeks
    
    contents of the file after execution:
    geeksfor geeks
    

    描述: seekp() 用于将放置指针移动到相对于参考点的所需位置。使用此函数将流指针更改为绝对位置(从文件开头开始计数)。在这个程序中,以下内容将写入文件。

    ofile<< "geeksforgeeks", 13;
    

    然后ofile.seekp(8)会将指针放在从你开始的8位置,然后将打印以下内容。

    ofile<< " geeks", 6;
    
  5. 以下程序的输出是什么?
    #include   
    #include 
    #include 
      
    using namespace std;
      
    int main () 
    {
        ifstream ifile;
        ifile.open ("text.txt");
          
        //content of file: geeksfor geeks
        char last;
        ifile.ignore (256, ' '); 
        last = ifile.get();  
          
        cout << "Your initial is " << last << '\n';
        ifile.close();
        return 0;
    }
    

    输出:

    Your initial is g
    

    描述: ignore(256, ' ') 从输入序列中提取字符并丢弃它们,直到提取了 256 个字符,或者一个比较等于 ' '。该程序打印文件中第二个单词的第一个字符。