我想将字符串赋给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之后,它会打印一些垃圾值
答案 0 :(得分:1)
attrName
和attrValue
都是指针,char
是一种整数,因此赋值运算符只会复制指针的值(地址),而不是内容。
循环遍历字符串或使用某些版本的strcpy()
,或者确实使用其中一个C ++字符串库。
答案 1 :(得分:0)
首先,当你声明你的数组时,你应该使用
char *resultArray = new ResultArray[100];
VS
char *resultArray[100];
接下来,在不知道循环限制的情况下,不应该使用循环来填充有界数组。您将溢出阵列,并导致段错误。当然除非你知道你的长度不会接近100。(仍然是一个坏主意,但要快速拼凑一些东西,我不会抱怨)
如果没有更多信息,我无法告诉你为什么你会得到垃圾。你是如何打印出来的?这些'转码'功能有什么作用?数据来自哪里?
PS - 记住你可以使用
resultArray[cnt++] = attrName;
resultArray[cnt++] = attrValue;