给你提供了一个读取文件的函数ReadFile(),该函数可以将包含完整路径名的文件打开,读取其中以空格分隔的数据元素,并添加到动态数组vData中,你可以像普通数组一样去使用这个动态数组,如果你要获取动态数组的数据个数,可是使用int nSize = vDatasize();源码如下:(不明白的地方可以hi我)
#include<fstream>
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void ReadFile(vector<double> &vData, const char pFilePath)
{
ifstream inFile;
inFileopen(pFilePath);
char ch;
string buff;
if(inFileis_open()){
while(!inFileeof()){
ch = inFileget();
if(ch != ' ')buffpush_back(ch); // 以空格为分隔符
else {
vDatapush_back(atof(buffc_str()));
buffclear();
}
}
inFileclose();
}
}
void main() // 测试
{
vector<double> vData;
const char pFilePath = "c:\\atxt"; // 文件路径
ReadFile(vData, pFilePath);
vector<double>::iterator iter;
cout << "The contents in " << pFilePath << " are:\n";
for(iter = vDatabegin(); iter != vDataend(); ++iter)cout << iter << endl;
}
测试:
C盘根目录下数据文件atxt,其内容为:51729 2000 7 4 600000 26559806648 00104311679 54069036031 168097400204 34273492608 89725355246 792e-022
运行,在屏幕中输出已经读到动态数组vData中的数据:
The contents in c:\atxt are:
51729
2000
7
4
600000
26559806648
00104311679
54069036031
168097400204
34273492608
89725355246
792e-022
你是要寻找文件的例子吧
给你个例子
删除文件夹
删除文件夹你在cmd里面删除试试,他会提示文件夹不为空不能删除。意思就是必须先删除文件夹里面的文件再删除文件夹
删除文件夹里面的文件,就要用到寻找所有文件,包括文件夹里面的文件夹(子文件夹)
函数名称:BianLiDel
函数功能:删除目录下所有文件,最后删除文件夹
返回值:成功返回TRUE 失败返回FALSE
//以下是宽字节用法
//窄字节替换函数char sprintf strcmp 去掉_T()
//C:\文件夹\WenJianJia\
//这时候会删除WenJianJia这个目录
BOOL BianLiDel(wchar_t path)
{
wchar_t D_Path[MAX_PATH]={0};
wsprintfW(D_Path,_T("%s"),path);//在文件名后面加上,输入C:\文件夹\WenJianJia\就会变成C:\文件夹\WenJianJia\
WIN32_FIND_DATA wfd;//定义一个结构体
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体
HANDLE fhn = FindFirstFile(D_Path,&wfd);//寻找第一个文件
BOOL bRet = TRUE;//如果第一个文件找到了就进入循环
while (bRet)
{
wchar_t tem[MAX_PATH]={0};
if (wfddwFileAttributes==FILE_ATTRIBUTE_DIRECTORY&&_wcsicmp(_T(""),wfdcFileName)!=0&&_wcsicmp(_T(""),wfdcFileName)!=0)
{ //判断是否为目录 判断文件夹名字是否为''和''
wsprintfW(tem,_T("%s%s\\"),path,wfdcFileName);
BianLiDel(tem);//是目录就删除目录下的文件
}else{
wsprintfW(tem,_T("%s%s"),path,wfdcFileName);
SetFileAttributes(tem,FILE_ATTRIBUTE_NORMAL);
DeleteFile(tem);//不是就删除文件
}
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体
bRet = FindNextFile(fhn,&wfd);//寻找下一个文件
}
FindClose(fhn);//如果不关闭会一直提示被占用
return RemoveDirectory(path);//删除目录
}
文件 *** 作有很多函数和类的实现,对于很多初学者来说知道的可能也不多一、文件的打开在stdlibh这个头文件里面有FILE类型,我们可以用它来保存打开的文件数据流,或者说是一个指针
FILE m_pFile;
String filname("C:/abcraw");
m_pFile=fopen(filnamegetBytes(),"r");fopen函数用来打开,第一个参数是const char 类型,第二个是打开的模式,可以是只读"r"也可以是"w",第一个参数的路径文件夹之前要用反斜杠或者双斜杠,否则会找不到文件当然你也可以用CFile类,使用之前要加afxh头文件CString filename("C:/dataraw");CFile cf;cfopen(filename,CFile::modeRead);第一个参数是一个LPCTSTR类型,是一个指向字符串的长指针,第二个参数是打开模式,第一个参数如果直接用一个字符串常量的话会编译出错,说无法把const char[]类型转化为LPCTSTR类型,但是CString这个类可以被直接转换二、文件里面的定位跟fopen对应的定位函数是fseekfseek(m_pFile,0,SEEK_SET);第一个参数是指向打开文件的FILE类型指针,第二个参数是跟第三个参数有关的,是相对于第三个参数的偏移量,第三个参数是指针起始定位,SEEK_SET表示定位到文件头,上面的意思是定位到文件头偏移0个字节的位置,SEEK_CUR是定位到指针当前位置,SEEK_END是定位到文件尾rewind(m_pFile);这个函数是定位到文件头的意思,跟上面的那句意思一样不过在windows mobile 50系统里面的API中没有这个函数CFile类里定位成员函数是Seek,SeekToBegin,SeekToEnd这三个,看函数名就知道后面两个是定位到文件头和尾,第一个函数是定位到指定位置cfSeek(289,CFile::begin);第一个参数是偏移量,当然是相对于第二个参数来说的,由于CFile::begin表示文件头,所以这一句的意思是定位到从文件头开始计算的289字节处后面两个函数就不用说了,是不带参数的三、文件的读写同样的,fwrite函数,fread函数跟fopen,fseek是相对应的。WORD buffer;fread(buffer,17sizeof(WORD) ,1,m_pFile);fwrite(buffer,17sizeof(WORD) ,1,m_pFile);第一个参数从文件中读出来保存数据的缓冲区或者已经存在数据的缓冲区,第二个参数是要读入或者要写入的数据长度,第三个参数是写入第二个参数长度数据有次数,如果改成是2,就是说写入buffer两次17sizeof(WORD)长度的数据,一共是34sizeof(WORD)长度;最后一个参数是文件流,前面也说过就不再解释。CFile类里也不会缺少文件读写函数。cfRead(buffer,17sizeof(WORD));cfWrite(buffer,17sizeof(WORD));这两个函数比较简洁,我想大家一看就明白了吧,前面是要写入或者读出的缓冲区,后面是长度。四、文件的关闭我们打开文件之后会进行一系列的读写 *** 作,在这些 *** 作之后我们千万不要忘记把打开的文件关闭与fopen对应的是fclose,语法为fclose(m_pFile);关闭的就是文件流指针。CFile类里面的是cfClose();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)