读书人

有没有高手帮小弟我看看小弟我写的这

发布时间: 2012-02-06 15:52:44 作者: rapoo

有没有高手帮我看看,我写的这个去掉字符串中标点的小程序,为什么不能运行了,运行环境vc++6.0
[i][/i]有没有高手帮我看看,我写的这个去掉字符串中标点的小程序,为什么不能运行了,运行环境vc++6.0,运行到if (ispunct(line[i])==true)这里就报错unhandle exception,access violation

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main()
{ string line;
string result_s;
int i;
int n;
cout<<"enter the string:"<<endl;
getline(cin,line);
for(i=0;i<=line.size();i++)
{
if (ispunct(line[i])==true)
{cout<<"punctuation occur"<<endl;}
else
{result_s[n]=line[i];n++;}

}
cout<<result_s<<endl;
return 0;
}


[解决办法]

C/C++ code
#include <iostream>#include <string>#include <cctype>using namespace std;int main(){    string line;    string result_s;    cout<<"enter the string:"<<endl;    getline(cin,line);    for(int i=0; i<line.size(); i++) {        if (ispunct(line[i]))            cout<<"punctuation occur"<<endl;        else            result_s.push_back(line[i]);    }    cout<<result_s<<endl;    return 0;}
[解决办法]
到if (ispunct(line[i])==true)这里就报错unhandle exception,access violation

从for(i=0;i<=line.size();i++)可以看出i越界了,元素有line.size()个,
但是下标最多是line.size()-1。
[解决办法]
VC6里没有push_back吗?太老了不记得了,那就这样吧:
C/C++ code
result_s += line[i]; 

读书人网 >C++

热点推荐