Hakeone 2015-06-21 10:39 采纳率: 50%
浏览 2135
已采纳

这个函数有什么问题,一调用就中断

一调用就抛出框框:
carmain3.0.exe 中的 0x758e4598 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0042ef1c 处的 std::invalid_argument。

下面是该函数
void big_car::read(){
fstream big_carfile("big_car.txt",ios::in|ios::out);
vector vec;

fun_substr(big_carfile," ",vec);
vec.resize(9);
int i,j;
for(i=0,j=0;i<vec.size();i=i+9,j++){

   c1[j].num = vec[i];
   c1[j].id = vec[i+1];
   c1[j].company= vec[i+2];
   c1[j].km = atoi(vec[i+3].c_str());
   c1[j].oil = stoi(vec[i+4].c_str());
   c1[j].cost= stoi(vec[i+5].c_str());
   c1[j].road = stoi(vec[i+6].c_str());
   c1[j].all_cost =stoi( vec[i+7].c_str());
   c1[j].people = stoi(vec[i+8].c_str());

}
count_big_car = j+1;
big_carfile.close();

big_car为一个car的派生类,
相关头文件,变量已经定义。

内部调用的函数 fun_substr()
//功能描述:将指定文件每一行中字段按一定分割符分割的值存至vector
//输入:待读取的文件,字段之间的分割符
//输出:获取字段内容的动态数组
//返回值:无
void fun_substr(fstream &file,string str_sep ,vector &vec){

int count =0;
string str = "";
string str_temp = "";
int pos = 0;
int sep_len = str_sep.length();
int i=0;
while(getline(file,str)){
    pos = str.find(str_sep);
    vec.push_back(str.substr(0,pos));
    str_temp = str.substr(pos+1,str.length()-pos-sep_len);
    pos = str_temp.find(str_sep);
        while(str_temp.compare("")&& (pos!=-1)){
        i++;
    vec.push_back(str_temp.substr(0,pos));
    str_temp = str_temp.substr(pos+1,str_temp.length()-pos-sep_len);
    pos = str_temp.find(str_sep);
    }
    vec.push_back(str_temp);
}

}

已经困扰很久。
求解脱。。!!!!!!!!!!!。。。。。。。。。。。。。

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-06-21 12:52
    关注

    起码调试跟踪一下,看具体出错的地方。看错误信息是指针访问出错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
  • ¥30 itest不允许查看成绩怎么办
  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏