
用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;
} 展开
#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;
} 展开
4个回答
展开全部
这一句:
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起始地址的地方,而是一个内部的指针指向的,只能通过>>操作符来操作。
展开全部
第二个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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说你是不是扯淡。。。String的指针,你用sizeof(int)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询