| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1479 人关注过本帖
标题:vs2010调试时程序退出怎么回事
只看楼主 加入收藏
humy
Rank: 2
等 级:论坛游民
帖 子:69
专家分:18
注 册:2012-7-23
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:4 
vs2010调试时程序退出怎么回事
//建立储存作者与相应作品信息的multimap容器
//支持查并删除。若元素不存在,程序也支持。
# include<iostream>
#include<string>
#include<map>
using namespace std;
typedef multimap<string,string> Au_work;
typedef Au_work::iterator Ait;
int main()
{
    Au_work work_list;
    string sa,sw;
    while(1)
    {
        cout<<"enter author and end all with @"<<endl;
        getline(cin,sa);
        if(sa=="@")
            break;
        cout<<"enter the books' name each end by enter,ctrl+z to end all"<<endl;
        while(getline(cin,sw))
            work_list.insert(make_pair(sa,sw));
        cin.clear();
    }
    while(1)
    {
        cout<<"enter author you want to erase and @ to end all"<<endl;
        getline(cin,sa);
        if(sa=="@")
            break;
        Ait beg=work_list.find(sa),end=work_list.end();
        if(beg==end)
            cout<<"cannot find the record"<<endl;
        else
            work_list.erase(sa);
    }
    cout<<"here"<<endl;///////////////////看这里
    //to check whether the code functions well,print all the authors and work still in the list
    string pa,ca;
    for(Ait beg=work_list.find(sa);beg!=work_list.end();beg++)
    {   
        //ca represents current author,pa represents pricious author
        pa=ca;
        ca=beg->first;
        cout<<((ca==pa)?"    ":ca)<<'    '<<beg->second<<endl;
    }
    return 0;
}开始时没写显示删除后的那段代码运行时没问题,为了检查有没有真的达到效果,就加了那一段结果一样,他竟没输出,如图。于是调试设了断点,但每次运行到上面注释的    看这里  附近就自动退出了,如图。其实我写其他小程序时也会遇到同样情况,但自己随便改改,不知不觉那个错就没了。
所以很想问这个自动退出一般是什么原因。。。。谢谢
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 信息 元素 include 
2012-08-14 19:23
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
明天有空的话,帮你调调看。
2012-08-14 22:28
humy
Rank: 2
等 级:论坛游民
帖 子:69
专家分:18
注 册:2012-7-23
收藏
得分:0 
回复 2楼 pangding
发现错误是for循环的初始化错了Ait beg=work_list.find(sa);改为
for(Ait beg=work_list.begin();beg!=work_list.end();beg++)
可是还是想问,:     程序自动退出一般是因为什么?
2012-08-15 08:28
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
哦。你这种情况可能是因为有未捕获的异常。异常处理你现在学了吗?

一般来说运行时出现的各种错误都有可能使程序退出。常见的包括指针越界呀,未捕获异常之类的。find 之后,一般都要测一下它是不是找到了。
2012-08-15 10:22
humy
Rank: 2
等 级:论坛游民
帖 子:69
专家分:18
注 册:2012-7-23
收藏
得分:0 
回复 4楼 pangding
恩,前面有一章简单的说了一下,介绍了throw语句和try块。。。具体的异常处理没学吧。。。谢谢
2012-08-17 10:23
快速回复:vs2010调试时程序退出怎么回事
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032633 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved