读书人

C++ 指针数组怎么动态初始化字符串

发布时间: 2013-04-21 21:18:07 作者: rapoo

C++ 指针数组如何动态初始化字符串

#include <iostream>
using namespace std;

int main()
{
char *ch = new char[5];
for(int t = 0;t<5;t++)
cin>>ch[t];
for(int t = 0;t<5;t++)
cout<<ch[t];
cout<<endl;
return 0;
}

为什么只能输入5位,怎样动态初始化字符串?
还是我new不对,新手亲喷。
[解决办法]
引用:
引用:
你买了五张票,只能五个人进去看。非要六个人进去,人家会报警的。
我的意思是我想用指针数组初始化5组字符串,而不是5位的字符串,我该怎么改呢?

你那定义的就是五位的字符串,当然不能初始化5组字符串了。
如果你不能用std::string的话,可以这样:
char* str[5];//字符串指针的数组
int len;
for(int i=0; i<5; i++)
{
//分别确定每个字符串的长度和内容
cout<<"请输入第"<<i<<"个字符串的长度"<<endl;
cin>>len;
str[i] = new char[len+1];//长度加1是后面要有个空字符
cout<<"请输入第"<<i<<"个字符串的内容"<<endl;
for(int j=0; j<len; j++)
{
cin>>str[i][j];
}
str[i][len] = '\0';//字符串以空字符结束
fflush(stdin);//清除这一次多输入的字符,否则这一次多输入的内容会成为下一个字符串的内容
}

[解决办法]
#include<iostream>
using namespace std;
void alloc(char **&table,int m,int n)
{
table=new char*[m];
for(int i=0;i<m;i++)
{
table[i]=new char[n];
}


}
void main()
{

char **p;
alloc(p,2,2);
for(int j=0;j<2;j++)
{
p[j]="nihao";
}
for(int i=0;i<2;i++)

{
cout<<p[i]<<endl;
}
delete[] p;
p=NULL;

}动态申请二维字符数组,你试试,看行不行

读书人网 >C++

热点推荐