2011-10-14 2 views
1

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을 반복 한 후, 그 어떤 쓰레기 값을 인쇄

+0

가 적어주십시오 사용할 수있는 기억 나? –

답변

1

attrNameattrValue은 모두 포인터이며 char은 정수 유형이므로 할당 연산자는 내용이 아닌 포인터 (주소) 값을 복사합니다.

문자열을 반복하거나 strcpy() 또는 실제로 C++ 문자열 라이브러리 중 하나를 사용하십시오. 당신이 당신의 배열을 선언 할 때

0

첫째, 당신은

char *resultArray = new ResultArray[100]; 

char *resultArray[100]; 

다음을 사용해야합니다, 혹시을 모른 채 경계 배열을 채우기 위해 루프를 사용하지 말아야합니다 루프의 한계 배열이 오버플로되어 segfault가 발생합니다. 물론 길이가 100에 가까워지는 것을 알지 않는 한. (여전히 나쁜 생각이지만, 함께 빨리 치는 것, 나는 불평하지 않을 것입니다.)

더 이상의 정보가 없으면 왜 당신을 말할 수 없습니다 쓰레기를 가져 가고있어. 이걸 어떻게 인쇄하고있어? 이 '트랜스 코드'기능은 무엇을합니까? 데이터의 출처는 어디입니까?

추신 - 당신이 코드에서 문제가 자기 명단 곳

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