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组字符串了。
如果你不能用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;
}动态申请二维字符数组,你试试,看行不行