求救高手,一个编程题!

题目的要求是这样的。。编一个程序从string对象中去掉标点符号。要求输入到程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的string对象。下面是我写的代码,... 题目的要求是这样的。。编一个程序从 string对象中去掉标点符号。要求输入到程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的string对象。 下面是我写的代码,运行之后出现一些奇怪的字符,想了半天也没想明白,虽然算法比较笨了点,但应该不会出错。希望高手指点。

#include<iostream>
#include<string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

int main()
{
//待测字符串的输入
cout<<"请输入带有标点符号的字符串:"<<endl;
string str;//待测字符串
cin>>str;

const string::size_type size_of_str=str.size();//定义并确定待测字符串的大小

string::size_type size_of_str_punct=0;//定义待测字符串中标点符号的个数
//确定待测字符串当中含有标点的个数
for(string::size_type i=0;i<size_of_str;i++)
{
if(ispunct(str[i]))
{
size_of_str_punct++;
}
}

int sos=size_of_str;
int sosp=size_of_str_punct;
char *temp=new char[sos-sosp+1];
int k=0;
//给temp进行赋没有标点符号的赋值
for(string::size_type j=0;j<size_of_str;j++)
{
if(!ispunct(str[j]))
{
temp[k]=str[j];
k++;
}
}

string finalstr(temp);//定义并初始化了最终字符串对象 finalstr(无符号的字符串)

delete temp;//删除动态临时内存

//进行输出 没有标点符号的字符串
cout<<"输出没有标点符号的字符串:"<<endl;
cout<<finalstr<<endl;

return 0;
}
展开
 我来答
colitas1969
2008-02-10 · TA获得超过107个赞
知道答主
回答量:301
采纳率:0%
帮助的人:196万
展开全部
是输出一些乱码了吗?看如下程序段

31 int k=0;
32 //给temp进行赋没有标点符号的赋值
33 for(string::size_type j=0;j<size_of_str;j++)
34 {
35 if(!ispunct(str[j]))
36 {
37 temp[k]=str[j];
38 k++;
39 }
40 }
41 temp[k]='\0';
42
我想是由于你没在后面加一个字符串结束标志而造成的,在循环的后面加句temp[k]='\0';即可
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机编程是指使用单片机编程语言,如C语言,来编写单片机的程序代码,以控制单片机的行为。这种技术在电子工程、计算机科学和电子通信等领域中被广泛应用。单片机编程的主要任务是设计和实现单片机的程序,包括定义单片机的指令系统、编写程序代码、处理器... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式