char 배열은 쉽게 string에 넣을 수 있습니다.
char array[50]; string str_array = array;
바이트 배열을 다룰 때 자주 쓰는 unsigned char는 호락호락하게 넣을 수 없습니다.
unsigned char uarray[50];
string str_array = uarray;
g++ -std=gnu++11 po13.cpp
po13.cpp: In function ‘int main()’: po13.cpp:127:57: error:
invalid conversion from ‘unsigned char*’ to ‘const char*’ [-fpermissive]
위와 같이 'unsigned char*' 형에서 'const char*' 형으로의 invalid conversion 오류가 발생합니다.
이걸 강제로 해주는 방법은 reinterpret_cast 지시어로 형변환을 해주면 됩니다. 대신 안전성은 검사하지 않는다고 하니 주의하여 사용해야 합니다.
unsigned char uarray[50];
string str_array (reinterpret_cast<char const *>(uarray));
위 string 생성자는 형변환을 해서 데이터를 복사하므로 원하는 길이까지만 복사할 수도 있습니다.
unsigned char uarray[50];
string str_array (reinterpret_cast<char const *>(uarray), 10);
위 코드는 uarray를 형변환을 하되 전체가 아닌 앞에서부터 10byte까지만 str_array에 복사하라는 뜻입니다.
형변환 지정을 하는 *_cast 연산자에 대해서 공부가 필요합니다. 관련 글은 다음에 작성하겠습니다.
참고: http://stackoverflow.com/questions/1673445/how-to-convert-byte-to-stdstring-in-c
'IT' 카테고리의 다른 글
vncviewer 비밀번호 자동 지정 (0) | 2014.11.17 |
---|---|
[gedit] 이전 커서 위치 기억하기 (0) | 2014.10.16 |
initializer-string for array of chars is too long (0) | 2014.08.13 |
Static structure in class 삽질 결과.. (0) | 2014.08.13 |
iONE Scorpius M10 키보드 한영키 한자키 문제 해결!! (0) | 2014.07.26 |