![](/img/trans.png)
[英]in C++ How to assign an element of an array of strings to an array of char?
[英]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之后,它会打印一些垃圾值
attrName
和attrValue
都是指针,而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.