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

c++中string的一个有关问题

2012-02-21 
c++中string的一个问题我是刚学习c++的菜鸟,编了一个函数StudyString()实现的功能:从string对象中去掉标点

c++中string的一个问题
我是刚学习c++的菜鸟,编了一个函数StudyString()实现的功能:从string对象中去掉标点符号。要求输入到程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的string对象。
        运行程序,最终输出的字符串是正确的,比如:输入you...y,则能够输出youy。但此时执行string的成员函数s.length(),得到的结果确是7,而不是4。请大虾指点迷津,谢谢。


#include   <stdio.h>  
#include   <iostream>
#include   <string>

using   namespace   std;

void   StudyString();

void   main()
{
StudyString();
}


void   StudyString()
{
string   s( "You   are   a   golden   pig!   Yeah!~~~ ");
int   m   =   0;
string::size_type   p   =   0;

while(m   ==   0)
{
getline(cin,   s);
p   =   s.size();

for   (string::size_type   i   =   0;   s[i]   !=   '\0 ';   ++i)
{
if(ispunct(s[i]))
{
m   =   1;
p--;

string::size_type   n   =   i;
while(s[n]   !=   '\0 ')
{
s[n]   =   s[n   +   1];
n++;
}
i--;//调整之后字符串s[i]是否仍是标点符号
}
}
}
s[p]   =   '\0 ';

m   =   0;
cout   < <   s   < <   s.length()   < <   endl   < <   p   < <endl;
}

[解决办法]
因为你没有缩减string的大小呀。
bool myispunct(char c){return ispunct(c);}
把你的for循环改成
s.erase(remove(s.begin(), s.end(), myispunct), s.end());

热点排行