用vc++6.0编译没问题,怎么输出时就错了呢

#include<iostream>#include<string>#include<stdlib.h>usingnamespacestd;intmain(){intn;... #include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
int n;
cin>>n;
string* p=(string*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
scanf("%s",&p[i]);
for(i=0;i<n;i++)
cout<<p[i];
return 0;
}
展开
 我来答
yuantailing
2013-08-08 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:694万
展开全部

这一句:

string* p=(string*)malloc(n*sizeof(int));

改成

string* p=new string[n];

首先为什么n*sizeof(int)而不是n*sizeof(string)?而且即使改成了n*sizeof(string)也不行,因为string是C++标准库里的一个类,直接malloc的话没有调用类的构造函数。


这一句:

scanf("%s",&p[i]);

不能这么写,应该用

cin >> p[i];

利用string类重载的>>操作符来进行输入,string类的存放数据的段并不存放在以string起始地址的地方,而是一个内部的指针指向的,只能通过>>操作符来操作。

麦田怪圈里的纳
2013-08-08
知道答主
回答量:34
采纳率:0%
帮助的人:22.9万
展开全部
第二个for循环中的i没有定义,第一个for循环定义的i出了for循环就没用了。虽然这不是主要问题。。。。还有你程序里面有c又有c++不太好。我知道的就这么多了。
追问
额,刚开始我是用c++写的,出现问题以后,又用c改了,结果还是不行,另外,编译没错,应该不是i的问题
追答
这个就不知道了。。。不好意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-08
展开全部
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
char *p=new char(n);
for(i=0;i<n;i++)
scanf("%c",&p[i]);
for(i=0;i<=n;i++)
cout<<p[i];
cout<<endl;
return 0;
}
这个输出也有问题,但是我想说的你要用数组,就不要定义为string
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海妖大人
2013-08-08
知道答主
回答量:35
采纳率:0%
帮助的人:21.4万
展开全部
你说你是不是扯淡。。。String的指针,你用sizeof(int)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式