如何将一个二维数组里的字符传到一个一维数组中??C++

有一个指向二维数组的指针**a,但二维数组中各行所含的列数不相等,怎么把二维数组所含的字符传到一个一位数组中?

利用2层for循环,很容易的。
你 String[] a=new string[int len]{};
加入这个是你的目标2维数组Array[i][j];
那就这样做了
for(int length=0,length<i;length++)
{
for(int length1=0;length1<j;length1++)
{
int count=0;
//要放进去的新数组a
a[count]=Array[length][length1].ToString();
count++;
}。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-02
按照楼主的描述,我估计原题可能是这样的:假设消息是由“ABCDEFG”组成的字符序列s,要求首先求出每个字符对应的Huffman编码,保存在二维字符数组HCode[][]中;然后再把消息序列s编成Huffman码,结果保存在另一个一维字符数组result中。“二维数组中各行所含的列数不相等”实际上应该是每个字符对应的huffman编码(用字符数组保存的字符串)不一样长(strlen(HCode[i][j])不一样大)。
Huffman编码都求出来了,再用类似查字典一样的方式不就可以得到原始字符序列s的Huffman编码序列result了么,就是1L说的方法。具体就是:strcat(result+strlen(result), HCode[i]),Hcode[i]对应序列s中的当前要编码的字符的Huffman码。
第2个回答  2011-09-02
利用2层for循环,很容易的。
你 String[] a=new string[int len]{};
加入这个是你的目标2维数组Array[i][j];
那就这样做了
for(int length=0,length<i;length++)
{
for(int length1=0;length1<j;length1++)
{
int count=0;
//要放进去的新数组a
a[count]=Array[length][length1].ToString();
count++;
}
}
这不就OK了吗,本回答被提问者采纳
第3个回答  2011-09-02
二维数组的列数怎么能不相等?除非你这个数组是指针数组,第一维度里的变量存储的是指针,指针指向的数组就是第二维度,就是你说的列不相等。
首先要确定你数组的变量类型,检测二维数组中高维度的长短,再复制到准备好的一维数组中。追问

额,霍夫曼编码中,HCode[a][b]的a存放有几个字符,b存放每个字符的编码,但编码长度不一样的嘛。。。
然后后面又要求把求出的编码存放在一维数组buff[]中。。。

追答

一共有a个字符哈?分别放在H[0]到H[a-1]的空间里。
不妨将每个字符编码长度存放在H[i][0],就是每一行的第一个空间里。编码放在H[i][1]到H[i][b-1]中。
明白我意思不?数组元素不都都是char型么,一个元素能存127呢,你的b应该没127大

第4个回答  2011-09-02
如果元素都是char,使用strcat就可以了追问

啊?怎么弄,针对这个问题(3L的追问)

追答

我给个简单的例子吧

#include
#include
#include

int main(void)
{
char s1d[80]={0};
char *s2d[]={"abc","d","ef","g",NULL,"hijklmn"};
int n=0;
int m=sizeof(s2d)/sizeof(s2d[0]);

while(n<m)
{
if(s2d[n]!=NULL)
strcat(s1d,s2d[n]);
n++;
}

printf(s1d);

system("pause");
return 0;
}