求助string对象的输入问题!!
请各位大大帮我看看。题目:编程实现,从string对象中去掉标点符号。要求输入到程序的字符串必须含有标点,输出结果是去掉标点后的string对象。
我用getline或cin命令读入string对象时,不管是否含有标点,总是判断无标点。
若直接给s初始化,则程序一切正常。
这是怎么回事啊??是不是用getline或cin读入时,必须用ctrl+Z结束输入的关系啊??该怎么改啊??
主程序如下:
int main()
{
string s;
cout << "Please inout a string s: "<< endl;
while (getline(cin,s))
cout << s <<endl;
string::size_type punct_cnt = 0;
for (string::size_type index = 0; index != s.size(); ++index) //检验是否含标点符号
{
if (ispunct(s[index]))
++punct_cnt;
}
cout <<"punct_cnt = " << punct_cnt << endl;
if ( punct_cnt == 0) //判断,若无标点输出错误信息;有标点,则去掉标点,并输出结果
{
cout << "Error! There is no punctation in the string."
<< endl;
}
else
{
cout << "Delete all punctations, and then the string s is:"<< endl;
for (string::size_type index = 0; index != s.size(); ++index)
{
if (ispunct(s[index]))
s[index] = ' ';
}
cout << s <<endl;
}
return 0;
}