string对象中去掉标点符号

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个元素。

你可能感兴趣的:(C++,string,c++)