2012-12-13 9 views
0

새로운 시스템을 통합하고 이전 시스템에는 메소드에 char *이 있습니다. 이제는 대신 UTF8CHAR *가 있습니다.String 객체를 UTF8CHAR 포인터로 변환하는 방법은 무엇입니까?

내가 문자열 개체가 :

string data("test set"); 

및 함수에 전달할 싶었 :

my_method(UTF8CHAR* text, ENUM extra, newStruct &item); 

내 첫 번째 시도가 무엇 :

newStruct param("hi", 0,0); 
my_method(data.c_str(), extra::OPEN,param); 

은 내가 얻을 해달라고 ERROR가 아니라 EXC_BAD_ACCESS

+1

문자열과 아무 관련이 없다고 추측 할 이유가 거의 없습니다. "새로운 시스템"을 프로그램 한 사람에게 도움을 요청하십시오. –

+0

Utf8Char *에 char *로 변환 문제가 있는지 확실하지 않았습니다. 그 대답은 아니오라고 생각하십니까? 그들은 자동으로 서로 변환합니까? – Fallenreaper

+0

UTF8CHAR 유형은 무엇입니까? char *? 여기서 가장 중요한 문제는 "data.c_str()"이 const 값을 반환한다는 것입니다 – benjarobin

답변

1

char 어레이에는 각각 일련의 바이트가 들어 있습니다. 문제의 라이브러리에 따라 다르지만 상식적으로는 UTF8CHAR 배열이 일련의 바이트이며 특정 바이트 조합이 특정 유니 코드 코드 포인트를 설명하고 다른 특정 바이트 조합은 불법이라는 이해가 추가됨을 나타냅니다. 따라서 모든 utf8 char 배열은 char 배열이지만 꼭 다른 방법은 아닙니다. 구별은 적절한 데이터 유형 처리를 보장하는 것을 제외하고 컴파일러가 검사 할 수있는 것이 아니기 때문에 char 포인터를 전달하면 작동합니다. 그렇지 않은 경우, 다른 것이 잘못되어 게시 한 코드에서 결정할 수 없습니다.

관련 문제