在C++课程设计中,由于采用了csv格式存储数据,故对文件操作涉及较多,在此总结一下csv文件格式的数据处理函数。
####C++文件流
流,简单来说就是建立在面向对象基础上的一种抽象的处数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的。
####文件操作
以下类型需要包含头文件 < fstream>
ofstream 输出流:是从内存(控制台)读到硬盘;
ifstream 输入流:是从硬盘读到内存(控制台).
fstream 文件流:是可对打开的文件进行读写操作.
打开文件的方式 | 在类ios(是所有流式I/O类的基类)中定义,常用的值如下: |
---|---|
ios::app | 文件不存在则创建, 在原文件内容后写入新的内容,app即单词 [append:附加] 的缩写。 |
ios::ate | 文件打开后定位到文件尾,ios:app就包含有此属性 |
ios::binary | 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文 |
ios::in | 文件以输入方式打开(文件数据输入到内存),文件不存在则创建(ifstream默认的打开方式) |
ios::out | 文件以输出方式打开(内存数据输出到文件), 文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式) |
以下几个不常用: | |
ios::nocreate | 不建立文件,所以文件不存在时打开失败 |
ios::noreplace | 不覆盖文件,所以打开文件时如果文件存在失败 |
ios::trunc | 如果文件存在,把文件长度设为0 |
关闭文件:file.close(); //与new之后要delete一样,打开文件后必须关闭文件
例:ifstream file(“d:\\date.csv”,ios::app); //路径名中的\要双写
####使用函数:
ch = file.get(); //去读一个字符,然后才能用eof判断是否为空
if(file.eof()) //如果 一个字符都未读到,表示文件为空
{
....
}
//eof()函数要跟在读取语句后,用来判断是否读到文件结束符EOF。原因为:
//要清楚"文件结束符"(0xff).就是说我们文件最后的字符不是文件结束符,而最后的字符的下一位才是.所以操作再读多一次.