Tuesday, April 5, 2011
NSString 을 std::wstring 으로 변환 및 버그 수정
MindHD 는 마인드맵 관련 엔진이 C++로 작성되어
iOS에서 구동될 경우 스트링 변환이 필수적이었다.
따라서, NSString을 wstring으로 변환하는 과정이 필요하다.
void NSStringToString(const NSString* text, String& str){
str = L"";
size_t len = [text length];
if(len <= 0){
return;
}
if([text canBeConvertedToEncoding:NSUTF32LittleEndianStringEncoding]){
str = (wchar_t*)[text cStringUsingEncoding:NSUTF32LittleEndianStringEncoding];
}
}
NSUTF32LittleEndianStringEncoding 사용하여 변환이 가능한데, 위 코드에 버그가 있었다.
리턴값이 char* 인데 wchar_t*로 변경하니 널 문자 삽입이 제대로 되지 않는 경우가 발생한 것이다.
str = wstring((wchar_t*)[text cStringUsingEncoding:NSUTF32LittleEndianStringEncoding], len);
명시적으로 스트링 길이를 주어 해결함.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment