c++ vector文件读取问题

图片说明
谁能知道这是为啥?怎么解决?
我想做的是把类中的数据存入文件,再读出来,每一行是一个对象的数据,所以用了vector,有没有更好的建议?(我是小白)

1个回答

你问题是:
1,你没有分行读入,分行读入用函数建议使用fgets,
2,读入的一行,对特殊字符进行处理。
3,每一行有很多信息,你的信息中并没有拆分,你如果是用空格作为分格符,但你的代码中并没有以空格作为分隔符来拆分的逻辑,拆分时可用strch或strstr

int ParseFile(const char* pszFileName)
{
if( NULL == pszFileName || 0 == strlen(pszFileName)) return 0;
char sBufferLine[5120]={0};
FILE *pFile = NULL;

pFile = fopen(pszFileName,"r");
if(pFile)
{
while( NULL != fgets(sBufferLine,sizeof(sBufferLine),pFile) )
{
/*add code here for :去提多余的空格,去掉一些换行符,回车符等*/
FixOneLineString(sBufferLine);

       /*ade code here for 将记录以分隔符拆分成字段插入至VECTOR中*/

   }
   fflush(pFile);
   fclose(pFile);

}
else{
printf("读取文件失败:%s",pszFileName);
return -2;
}
return 0;
}

/**********************************************************************
Description:将从文件中读取出的当前行做处理,去掉多余的格式分隔符如:/r,/n等
**********************************************************************/
void FixOneLineString(char *sFileBuf)
{
AllTrim(sFileBuf);
int len =strlen(sFileBuf);
if(len > 0)
{
if('\n' == sFileBuf[len-1])
{
if( len > 1 && '\r' == sFileBuf[len-2])
{ sFileBuf[len-2]='\0';}
else
{ sFileBuf[len-1]='\0';}
}
else if('\r' == sFileBuf[len-1])
{ sFileBuf[len-1]='\0'; }
}
}

NavyArmy
依水寒 回复qq_41135967: int ParseFile(const char* pszFileName) { if( NULL == pszFileName || 0 == strlen(pszFileName)) return 0; char sBufferLine[5120]={0}; FILE *pFile = NULL; pFile = fopen(pszFileName,"r"); if(pFile) { while( NULL != fgets(sBufferLine,sizeof(sBufferLine),pFile) ) { /*add code here for :去提多余的空格,去掉一些换行符,回车符等*/ /*ade code here for 将记录以分隔符拆分成字段*/ } fflush(pFile); fclose(pFile); } else{ printf("读取文件失败:%s",pszFileName); return -2; } return 0; }
一年多之前 回复
NavyArmy
依水寒 回复qq_41135967: int ParseFile(const char* pszFileName) { if( NULL == pszFileName || 0 == strlen(pszFileName)) return 0; char sBufferLine[5120]={0}; FILE *pFile = NULL; pFile = fopen(pszFileName,"r"); if(pFile) { while( NULL != fgets(sBufferLine,sizeof(sBufferLine),pFile) ) { /*add code here for :去提多余的空格,去掉不些换行符,回车回等*/ /*ade code here for 将记录以分隔符拆分成字段*/ } fflush(pFile); fclose(pFile); } else{ printf("读取文件失败:%s",pszFileName); return -2; } return 0; }
一年多之前 回复
qq_41135967
蓝礼 能具体点吗?不懂改呀
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问