2016-10-03 5 views
0

Ich habe versucht, die Zeichenkette wchar_t mit initWithBytes in NSString zu konvertieren, aber es gibt immer null zurück.Warum, wenn ich wchar_t * in NSString * umwandle, indem ich initWithBytes immer null zurückgebe, mache ich irgendeinen Fehler in meinem Code.

Ich habe den folgenden Code versucht, wo meine API NSString zurückgibt, aber es immer Null zurückgibt.

typedef struct CamList__Int_t 
    { 
     wchar_t DevicePath[MAX_CAM_DEV_SUPPORTED_INT][MAX_PATH]; 
     UINT8 No_of_Cam_Devices; 

    } 
    CamList_Int; 


    -(NSString *)ConvertWcharStringToNSString :(const wchar_t *)inputString { 
     if (inputString == NULL) { 

      printf("inputString is Null, So there is No String Conversion taken Place!!!\r\n"); 
      return NULL; 
     } 
     else { 
      printf("inputString: %s\r\n", inputString); //printing inputString for Debuging 
      return [ [NSString alloc] initWithBytes:inputString length:(wcslen(inputString) * sizeof(wchar_t)) encoding:NSUTF32LittleEndianStringEncoding ]; 
     } 
    } 


    -(void) getConnectedDeviceName :(inout NSString *)deviceName { 
     CamList_Int CamDeviceListInt; 
     if(CreateCamDevicesLists(&CamDeviceListInt) == true) { 

      deviceName = [self ConvertWcharStringToNSString: CamDeviceListInt.DevicePath[0]]; 
     } 
    } 

So bitte helfen Sie mir, dieses Problem zu lösen.

Vielen Dank im Voraus

+2

Mögliche Duplikat [Wie wchar \ 't zu NSString konvertieren?] (Http://stackoverflow.com/questions/7753262/how-to-convert-wchar-t-to- nsstring) – Larme

Antwort

0

Hallo, Ich habe festgestellt, ein Problem mit der Codierung Flagge ist und diese nach der Änderung es funktioniert gut.

Gegeben unten der re redigierte API-Aufruf, der den NSString ohne Null zurückgibt.

-(NSString *)ConvertWcharStringToNSString :(const wchar_t *)inputString { 
      if (inputString == NULL) { 

      printf("inputString is Null, So there is No String Conversion taken Place!!!\r\n"); 
      return NULL; 
      } 
      else { 
      printf("inputString: %s\r\n", inputString); //printing inputString for Debuging 
      return [ [NSString alloc] initWithBytes:inputString length:(wcslen(inputString) * sizeof(wchar_t)) encoding: NSUTF8StringEncoding ]; 
     } 
    } 

Dank

+0

Wie kann 'wchar' UTF-8 sein? – Droppy

Verwandte Themen