繁体   English   中英

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

[英]how to assign value to char * array[] in 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之后,它会打印一些垃圾值

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

遍历字符串或使用某些版本的strcpy()或确实使用C ++字符串库之一。

首先,在声明数组时,应使用

char *resultArray = new ResultArray[100];

char *resultArray[100];

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

没有更多信息,我无法告诉您为什么会垃圾。 您如何打印这些? 这些“转码”功能做什么? 数据来自哪里?

PS-请记住您可以使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM