蓝礼 2018-12-01 08:53 采纳率: 0%
浏览 917

c++ vector文件读取问题

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

  • 写回答

1条回答

  • 依水寒 2018-12-01 13:08
    关注

    你问题是:
    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'; }
    }
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图