C++文件操作

简介: C++文件操作

2019年华科考了一道文件操作题,所以在这里补充一下相关知识。

文件操作头文件<fstream>,可读可写,定义头文件好之后对文件的操作需要打开对应文件。

fstream f;
f.open("abc.cpp",ios::in);


上面是打开文件的一般流程,第一句是定义文件指针,第二句的open第一个参数是文件名,第二个参数是控制文件的读写情况,此时成功即返回文件指针,f就与abc.cpp文件相对应了!

这里的第二个参数常用的有以下4个:

1685018098318.jpg

对文件操作重要的是输入输出,fstream由iostream引申而来,f可以代替cin和cout进行输入输出,即在我们正常的输入输出中,只要把cin或cout变成对应的文件指针就可以对该文件输入输出。

承接上面定义,下面代码表示从f指向文件中输入一行

string  s;
getline(f,s)


输入输出解决了,还有一个重点就是控制输入输出的位置

通俗而言,文件刚打开会有一个默认指向文件开头的指针,在这里对文件操作有文件内指针会自动移动到下一个位置,如果是上面对行操作会自动移动到下一行。

如果我们需要改变位置就用到seekg() 和seekp() 分布是改变输入和输出指针的位置,其有两个参数,意义如下。

ios::beg 文件头

ios::end 文件尾

ios::cur 当前位置

例子:

file.seekg(0,ios::beg); //让文件指针定位到文件开头
file.seekg(0,ios::end); //让文件指针定位到文件末尾
file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动10个字节
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置


最后一步就是一些判断标志,文件是否打开,文件位置是否到了结尾等

Is_open( ) 判断文件是否处于打开的状态。如果是,返回true;如果不是,返回false

eof() 判断读文件是否到达文件末尾。如果是,返回true;如果不是,返回false


例题:

2019年华科机试第二题

将第一题的源代码保存为abc.c文件,并且要求abc.c文件中有相当数量的注释,包括//和/……/两种形式的注释

(1)读取abc文件的内容,将其显示在控制台上,并为每行代码增加一个符号。(10)

(2)使源代码中的//类型的注释内容不显示在控制台中。(10)

(3)使源代码中的/……/类型的注释内容不显示在控制台中。(10)

#include<fstream> 
#include<string>
#include<iostream> 
using namespace std;
int main(){
    fstream f;
    string s,a;
    f.open("abc.cpp",ios::in);//打开文件,只读 
    while(getline(f,s)){   //一行行读入元素 
      for(int i=0;i<s.size();i++) 
      {
      if(s[i]=='/'){
        if(s[i+1]=='/'){
        s.erase(s.begin()+i,s.end()); 
    break;}//如果是行注释 
        else if(s[i+1]=='*') {        //如果是/**/注释 
            a=s ;
            s.erase(s.begin()+i,s.end());
        while(a[a.size()-1]!='/'){ //找到末尾 
          getline(f,a); 
      }
      break;  
    } 
    } 
  }
      cout<<s<<"!"<<endl; 
  }
  f.close();
  return 0;
}


abc文件

1685018070164.jpg

对应结果:

1685018060430.jpg

相关文章
|
19小时前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
49 0
|
19小时前
|
存储 C++ iOS开发
C++文件操作
C++文件操作
|
19小时前
|
移动开发 Linux 程序员
c++文件操作,超详细
c++文件操作,超详细
51 0
|
18小时前
|
C++
深入理解 C++ 中的多态与文件操作
C++中的多态是OOP核心概念,通过继承和虚函数实现。虚函数允许对象在相同操作下表现不同行为,提高代码可重用性、灵活性和可维护性。例如,基类`Animal`声明`makeSound()`虚函数,派生类如`Cat`、`Dog`和`Bird`可重写该函数实现各自叫声。C++也提供多种文件操作,如`fstream`库的`ofstream`、`ifstream`用于读写文件,C++17引入的`&lt;filesystem&gt;`库提供更现代的文件操作接口。
20 0
|
18小时前
|
存储 C++
C++从入门到精通:2.3.1文件操作
C++从入门到精通:2.3.1文件操作
|
19小时前
|
存储 C++ iOS开发
C++文件操作(文本文件的读写+二进制文件的读写)
C++文件操作(文本文件的读写+二进制文件的读写)
|
19小时前
|
C++
C++语言学习文件操作应用案例
C++文件操作示例:创建`ofstream`对象写入&quot;Hello, World!&quot;到`output.txt`,刷新缓冲区,然后使用`ifstream`读取并打印文件内容。如果文件打开失败,程序将显示错误信息并返回1。
13 3
|
19小时前
|
存储 编译器 程序员
【C++ 文件操作与字符串处理】从文件读取到内容分割的全方位指南
【C++ 文件操作与字符串处理】从文件读取到内容分割的全方位指南
104 6
|
19小时前
|
存储 监控 API
【C/C++ 文件操作】深入浸润:C++多线程文件操作的艺术与策略
【C/C++ 文件操作】深入浸润:C++多线程文件操作的艺术与策略
64 0
|
19小时前
|
存储 编译器 程序员
近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)
近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)
113 0