关于iterator指针的有关问题···

关于iterator指针的问题···
废话不多说,上代码:
主函数:
C/C++ code
void main()
{
    vector<string> input;
    vector<string>::iterator iter;
    ifstream myf;
    string getfile;
    cout<<"请输入要分析的文本文件"<<endl;
    cin>>getfile;
    ifstream infile(getfile.c_str());
    if (!infile){
        cout<<"无法正常打开文件!请重新输入!"<<endl;
    }  
    string word;
    vector<string> word_peaces;
    while ( infile >> word )
    {
        word_peaces.clear();
        word_peaces=breaks(word);
        for (vector<string>::iterator vsi=word_peaces.begin(); vsi!=word_peaces.end(); ++vsi)
        {    
            string getword = *vsi;
                           int code=transform(getword);
            if (code==-1) 
                cout << "[ -1 ,  error ]" << endl;
            else 
                cout << "[ " << code << " ,  " << getword << "  ]" <<endl;
        }
    }
}

其中break函数如下:
C/C++ code
vector<string> breaks(string s) // 按特殊符号分割
    {
        vector<string> tmp(0);
        string::iterator i=s.begin(),last=s.begin();    // last : 上一次分割后的位置
        int sym_length; // 特殊符号的序号
        while (i!=s.end())
        {
            i=find_symbol(last, s.end(), sym_length);
            if (i!=s.end())  // 找到一个符号
            {
                if (i!=last) tmp.push_back(string(last, i));    
                tmp.push_back(string(i, i+sym_length) );
                last=i+sym_length;
            }
            else
            {
                tmp.push_back(string(last, s.end()) ); 
            }
        }
        return tmp;
    }

另外,我是在写一个简单的CMM词法分析器,我的程序编译的时候没问题,就是在运行的时候,出现指针错误,debug后发现,主函数中红色代码的vsi指针总是显示“错误的指针”我一直找不出原因··希望各位大牛拉拉小弟··谢谢啦

------解决方案--------------------
i=find_symbol(last, s.end(), sym_length);
你这个find函数如果说没找到该特殊符号返回的是什么值呢?
------解决方案--------------------
tmp.push_back(string(i, i+sym_length) );
确定i+sym_length不会越界么