2011-03-13 10 views
0

, cout 올바른 문자열 배열을 출력한다. 불행히도 cout << rs[i] 여기서 0<i<5iint 인 코드에서 다른 장소 (범위 오차 여전히 동일한 기능에 따라서 생략), 빈 공간을 출력한다. 도움을 주시면 감사하겠습니다.C++ 문자열 배열 범위 문제 코드 아래에서

int N; 
inp >> N; 
string a[N]; //For matchee 
string b[N]; //For matcher 
string rs[N]; //For reflection 
for(int i=0; i<N; i++) { 
    inp >> a[i]; 
} 
for(int i=0; i<N; i++) { 
    inp >> b[i]; 
} 
/*Build the reflection matrix*/ 
bool reflectCorrect = 1; 
for(int i=0; i<N; i++) { 
    for(int j=0; j<N; j++) { 
     rs[i][j] = a[i][N-1-j]; 
     cout << rs[i][j]; 
     if(!(rs[i][j] == b[i][j])) { 
      reflectCorrect=0; 
     } 
    } 
    cout << "\n"; 
} 
+0

어떻게 당신은 우리에게 우리가 당신이 우리를 표시하지 않는 코드에 문제가 있는지 생각하게됩니다 올바른 코드를 보여주는 것으로 생각하십니까? – littleadv

+1

devilish 컴파일러는 이것을 컴파일합니다. 가변 크기 배열을 C++로 만들지 않아도됩니다. – ltjax

답변

1

라인 rs[i][j] = a[i][N-1-j];이 잘못되었습니다. 잠재적으로 할당 된 문자열의 경계 밖으로 쓰고 있습니다. 거기에 글을 쓴 직후에 인쇄 할 때 괜찮은 것처럼 보이지만 나중에 다른 코드가 다른 것들에 공간을 사용하게됩니다. 문자열에 하나의 문자를 쓰고 있기 때문에 대신 push_back을 사용할 수 있습니다. 당신이 그것을 필요로

rs[i].push_back(a[i][N-1-j]);

이 문자열에 더 많은 공간을 할당해야합니다.

+0

정말 고마워요! 그게 효과가 있었어! – joshim5