string对象中去掉标点符号

来源:互联网 发布:淘宝刚上架过期不存在 编辑:程序博客网 时间:2024/04/29 23:22

C++ Primer 4th Edition,P78,习题3.10

题目要求:编写一个程序,从string对象中去掉标点符号。要求输入到程序的字符串必须必须包含标点符号,输出结果则是去掉标点符号后的string对象。


int main(){string str;string new_str;int pos=0,new_pos=0;cout << "Please Enter a string: " << endl;cin >> str;//使用两个字符串,两个int变量/* while(pos != str.size()){if((str[pos]>='0'&&str[pos]<='9') || (str[pos]>='a'&&str[pos]<='z') || (str[pos]>='A'&&str[pos]<='Z')){new_str.push_back(str[pos]);new_pos++;}pos++;}cout << "The changed string is: " << new_str << endl;*///使用一个字符串,一个int变量while(pos != str.size()){if((str[pos]>='0'&&str[pos]<='9') || (str[pos]>='a'&&str[pos]<='z') || (str[pos]>='A'&&str[pos]<='Z'))pos++;else{for(string::size_type ix=pos; ix!=(str.size()-1); ++ix)str[ix] = str[ix+1];str.erase(str.size()-1,1);}}cout << "The changed string is: " << str << endl;return 0;}


注意点:

1.对于新定义的空string对象,不能使用[]下标引用,要添加元素,只能用str.push_back(new_element);

2.删除string对象,可以使用erase()方法,str.erase(pos,n):删除str对象pos位置开始的n个元素。

1 0
原创粉丝点击