首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有没有高手帮小弟我看看,小弟我写的这个去掉字符串中标点的小程序,为什么不能运行了,运行环境vc++6.0

2012-02-06 
有没有高手帮我看看,我写的这个去掉字符串中标点的小程序,为什么不能运行了,运行环境vc++6.0[i][/i]有没有

有没有高手帮我看看,我写的这个去掉字符串中标点的小程序,为什么不能运行了,运行环境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]; 

热点排行