关于iterator指针的有关问题···
关于iterator指针的问题···
废话不多说,上代码:
主函数:
其中break函数如下:
另外,我是在写一个简单的CMM词法分析器,我的程序编译的时候没问题,就是在运行的时候,出现指针错误,debug后发现,主函数中红色代码的vsi指针总是显示“错误的指针”我一直找不出原因··希望各位大牛拉拉小弟··谢谢啦
------解决方案--------------------
i=find_symbol(last, s.end(), sym_length);
你这个find函数如果说没找到该特殊符号返回的是什么值呢?
------解决方案--------------------
tmp.push_back(string(i, i+sym_length) );
确定i+sym_length不会越界么
废话不多说,上代码:
主函数:
- 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不会越界么