如何在C ++中为char * array []赋值

时间:2011-10-14 13:38:13

标签: c++

我想将字符串赋给char数组

这是代码 -

char *resultArray[100];
int cnt = 0;
void MySAX2Handler::startElement(const XMLCh* const uri, const XMLCh* const localname,
                                 const XMLCh* const qname, const Attributes& attrs)
{
   char* message = XMLString::transcode(localname);
   resultArray[cnt] = message;
   cnt++;

   for (int idx = 0; idx < attrs.getLength(); idx++)
   {
      char* attrName = XMLString::transcode(attrs.getLocalName(idx));
      char* attrValue = XMLString::transcode(attrs.getValue(idx));
      resultArray[cnt] = attrName;
      cnt++;
      resultArray[cnt] = attrValue;
      cnt++;
   }
   XMLString::release(&message);
}

在迭代resultArray之后,它会打印一些垃圾值

2 个答案:

答案 0 :(得分:1)

attrNameattrValue都是指针,char是一种整数,因此赋值运算符只会复制指针的值(地址),而不是内容。

循环遍历字符串或使用某些版本的strcpy(),或者确实使用其中一个C ++字符串库。

答案 1 :(得分:0)

首先,当你声明你的数组时,你应该使用

char *resultArray = new ResultArray[100];

VS

char *resultArray[100];

接下来,在不知道循环限制的情况下,不应该使用循环来填充有界数组。您将溢出阵列,并导致段错误。当然除非你知道你的长度不会接近100。(仍然是一个坏主意,但要快速拼凑一些东西,我不会抱怨)

如果没有更多信息,我无法告诉你为什么你会得到垃圾。你是如何打印出来的?这些'转码'功能有什么作用?数据来自哪里?

PS - 记住你可以使用

resultArray[cnt++] = attrName;
resultArray[cnt++] = attrValue;