C++学习--向txt文件写入数据、读取数据、获取行数以及删除文件

基于VS2013平台的代码如下:

#include <iostream>
#include <fstream>
using namespace std;

void main()
{
    ofstream fout;
    int a = 15;
    int b = 22;
    FILE *Pf;
    int count = 0;//保存txt文件的行数的变量
    char flag_c; //保存遍历txt文件中单个字符的变量

    //写入到txt文件中
    fout.open("ColNum.txt");//建立名为ColNum.txt的文件并与fout关联
    string fileName = "carinfo.txt";    
    fout << a << endl;
    fout << b << endl;
    fout.close();//完成后,关闭TXT文件

    //读取txt文件
    ifstream fin;
    fin.open("ColNum.txt");
    int wta;
    int wtb;
    fin >> wta;
    fin >> wtb;
    cout << "txt中第一行的数:" << wta << endl;
    cout << "txt中第二行的数:" << wtb << endl;
    fin.close();//完成后,关闭TXT文件

    fopen_s(&Pf, "ColNum.txt", "rt+");//以只读方式打开txt文件
    while (!feof(Pf))
    {
        flag_c = fgetc(Pf);
        if (flag_c == '\n')
        {
            count++;
        }           
    }
    cout << "txt文件行数:" << count << endl;
    fclose(Pf);
    system("del ColNum.txt");//删除txt文件
}
  • 头文件fstream定义了用于处理输出的ofstream类、处理输入的ifstream类。
  • open()方法接受一个C-风格字符串作为参数,可以是一个字面字符串,也可以是存储在数组中的字符串。
  • close()方法不需要使用文件名作为参数,因为fout、fin已经与特定对象关联起来。

  • fopen_()函数原型如下

errno_t fopen_s(   
   FILE** pFile,  
   const char *filename,  
   const char *mode   
); 
errno_t _wfopen_s(  
   FILE** pFile,  
   const wchar_t *filename,  
   const wchar_t *mode   
); 

pFile:指向文件指针的指针,文件指针将接收指向已打开文件的指针。
filename:文件名。
mode:允许的访问类型。
返回值:如果成功返回0,失败则返回相应的错误代码。
详见:MSDN:fopen_s、_wfopen_s

  • feof()函数原型如下:
int feof(   
   FILE *stream   
); 

stream:指向 FILE 结构的指针。
返回值:如果读取操作已尝试读取超过文件的末尾,feof 函数将返回非零值;否则该函数返回 0。 如果流指针为NULL,该函数将调用无效参数处理程序,如中所述参数验证。 如果允许执行继续,errno 将设置为 EINVAL,feof 将返回 0。

  • fgetc()函数原型如下:
int fgetc(   
   FILE *stream   
);  
wint_t fgetwc(   
   FILE *stream   
);

stream:指向 FILE 结构的指针。
返回值:fgetc 返回作为 int 读取的字符或返回 EOF 以指示错误或文件尾。
此函数用来遍历txt文件中单个字符,所以可以用来遍历换行符,每次flag_c等于‘\n‘,说明是一行。

  • 使用system(“del ColNum.txt”)删除txt文件要求该txt文件必须处于非打开状态,否则无法删除。

猜你喜欢

转载自blog.csdn.net/chenlin41204050/article/details/78050068