基于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文件必须处于非打开状态,否则无法删除。