有个错误,问下怎么解决,本人是新手!在线等!

杨小伙儿 2009-06-14 02:21:28
规定输入的字符串中,只能包含字母和*号,编写函数fun(char *a),其功能是:将字符串尾部的*号全部删除,中间和前边的*号不删除。主函数中输入字符串,调用函数,并输出结果字符串。
例如:若字符串中的内容为:******A*BC*DEF*G****, 删除后的字符串应是:******A*BC*DEF*G 。
#include <iostream>
#include <string>
using namespace std;

string fun(char *a)
{
string str(a);
string::iterator it = str.end() - 1;
while(*it == '*')
{
it--;
}
str.erase(it+1, str.end());
return str;
}

int main()
{
char a[]; //错误处
cin>>a;
cout<<fun(a)<<endl;
return 0;
}

错误是 cpp(19) : error C2133: 'a' : unknown size 我知道要是改成 char a[100] 就可以,但是我不想给它范围。问问高手们怎么改啊?? 在线等!
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang_e_2009 2009-06-14
  • 打赏
  • 举报
回复
char[]不给范围是不行的 没有办法分配内存
jimly1032 2009-06-14
  • 打赏
  • 举报
回复
那就加#define N 100;
如果还不符合你的要求的话,我就不知道了
杨小伙儿 2009-06-14
  • 打赏
  • 举报
回复
这个题目的要求是编写函数fun(char *a) 所以 楼上的不符合要求啊!
jimly1032 2009-06-14
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

string fun(string a)
{
string b(a);
string::iterator it = b.end() - 1;
while(*it == '*')
{
it--;
}
b.erase(it+1, b.end());
return b;
}

int main()
{
string a; //错误处
cin>>a;
cout <<fun(a) <<endl;
return 0;
}
这样就可以了。。。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧