2012-11-05 2 views
1

저는 C++ 캐스팅에 익숙하지 않아 C 스타일 캐스팅을 C++ 캐스팅으로 변환하려고합니다. 여기에 내 코드, 여기C 스타일 캐스팅을 C++ 스타일 캐스팅으로 변환

typedef unsigned char u8; 
u8 sTmp[20] = {0}; 

//.. code to put string data in sTmp 

char* sData; 
sData = (char*)&(sTmp[0]); 

이고, 나는 C++ 캐스팅에 (char*)&(sTmp[0])을 변환 할.

감사합니다.

+4

'reinterpret_cast'는 이것과 가장 유사하게 보입니다. –

+0

아래 답변 해 주시겠습니까? 감사. – domlao

+1

http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast – chris

답변

3

캐스트가 불필요하게 복잡합니다. 배열의 첫 번째 요소를 얻은 다음 해당 요소의 주소를 가져옵니다. 당신은 혼자 이름으로 배열의 주소를 얻을 수 있도록 표현, 포인터로 배열 붕괴,에 :

sData = (char*)sTmp; 

등 @ 리차드는 C++의 캐스트를 할 수있는 가장 좋은 방법은 다음과 같이 reinterpret_cast를 사용하고, 위 말했다 (내가 이미 언급 한 것처럼)

sData = reinterpret_cast<char*>(sTmp); 

마지막으로, sTemp는 표현식에 대한 포인터로 붕괴 할 것이다 구체적으로 서명 숯불 * (원시 메모리를 해결하는 일반적인 방법이다), 그래서 그것은 매우입니다 너는 실제로 그것을 에 던질 필요가 없다. char * 전혀. (인쇄하지 않으면 어쨌든 올바르게 보이지 않습니다.)

+0

나는 첫 번째 요소의 주소를 취하는 것을 좋아한다. 더 이상 변경하지 않고 코드를 벡터를 사용하여 쉽게 변환 할 수 있습니다. –

+1

왜 그런 경우에 시작하는 벡터로 쓰지 않으시겠습니까? –