关于ispunct()函数的问题?帮看下谢谢!

zhuyike 2008-03-20 12:32:10
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1;
cin>>s1;
for(string::size_type index=0;index!=s1.size();++index)
{
if(ispunct(s1[index]))
{
for(;index!=s1.size();++index)
s1[index]=s1[index+1];
}
}
cout<<s1<<endl;
return 0;
}
代码的功能是要实现去掉字符串中的标点符号,但好像if语句执行不了..?大哥哥们帮个忙看下哪出错了!!
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-03-20
  • 打赏
  • 举报
回复

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

int main()
{
string s1;
cin>>s1;

for (string::size_type index = 0; index < s1.size(); ++index)
{
if (ispunct(s1[index]))
{
for (string::size_type j = index; j < s1.size(); ++j)
s1[j] = s1[j + 1];
}
}
cout<<s1<<endl;
return 0;
}
dubiousway 2008-03-20
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
cin>> s1;
char ch=s1[0];
for(string::size_type index=0;index!=s1.size();++index)
{
if(ispunct(s1[index]))
{
for(string::size_type index2= index;index2!=s1.size()-1;++index2)
s1[index2]=s1[index2+1];
s1.resize(s1.size()-1);
}

}
cout <<s1 <<endl;
return 0;
}

laolaoliu2002 2008-03-20
  • 打赏
  • 举报
回复
大家手好快,我看到的时候已经被回答,郁闷ing.
ZiSheng 2008-03-20
  • 打赏
  • 举报
回复
顶,就是在出现标点符号的时间,后面的字符向后移动
fengying616 2008-03-20
  • 打赏
  • 举报
回复
要注意同时出现两个或更多标点符号的情况。
fengying616 2008-03-20
  • 打赏
  • 举报
回复
#include <iostream> 
#include <string>
using namespace std;
int main(){
string s1;
cin>> s1;
for(string::size_type index=0;index!=s1.size();){
if(ispunct(s1[index])){
string::size_type i;
for(i=index;i!=s1.size()- 1 && s1[i]!='\0';++i)
s1[i]=s1[i+1];
s1[i]='\0';
}else{
++index;
}
}
cout <<s1 <<endl;
system("Pause");
return 0;
}
星羽 2008-03-20
  • 打赏
  • 举报
回复

给你个更简洁的

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

int main()
{
string s1;
cin>>s1;

s1.erase(remove_if(s1.begin(), s1.end(), ispunct), s1.end());

cout<<s1<<endl;
return 0;
}

64,173

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧