2011-08-07 4 views
0

네트워크 스트림에서 얻은 문자열로 iOS에서 문자열 비교를 시도하고 있습니다.iOS : 버퍼 또는 문자열에서 Null 문자를 제거하려면 어떻게해야합니까?

스트림을 판독하고 코드 :

uint8_t buffer[1024]; 
int len; 
    while ([inputStream hasBytesAvailable]) 
    { 
     len = [inputStream read:buffer maxLength:sizeof(buffer)]; 
     if (len > 0) 
     { 
      NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; 
      [self handleServerResponse: intCommand Response:output]; 
     }else{ 
      [self endComms]; 
     } 
    } 

타단 서버는 항상 CHR 1024 바이트 응답 (0), 버퍼를 채우는 데이터의 끝에 배치되어를 생성한다. 내가 문자열 비교 할 때

는 :

if ([email protected]"B") { 
    //do something... 
} 

난 항상 부정적인 결과를 얻기를, 아마도 문자열은 응답 및 null 문자를 많이 contaings 때문이다.

문자열에 응답을 읽을 때 버퍼에서 빈 문자를 제거하고 싶지만 iOS에서이 작업을 수행하는 데 아무런 문제가 없습니다.

감사합니다.

감사합니다.

데이브

답변

0

코드가 작동하지 않는 이유에 대해 잘못된 가정을하고 있습니다.

변경 :

if (strCut == @"B") 

에 :

if ([strCut isEqualToString:@"B"]) 

나중에 참조 할 수 있도록이 가정을 결코 - 문제가 무엇인지 확인하기 위해 디버거 나 다른 도구를 사용합니다. Objective-C에 관한 입문서를 읽는 것을 고려할 수도 있습니다.

+0

고마워요 - 목표 C는 힘들어하고 있습니다 ... 어렵습니다! – user867358

0

문제는 iOS가 아마도 당신이 사용하고있는 것보다 낮은 레벨 일 것입니다. ==는 실제로는 문자열이 아닌 주소를 비교합니다. 네가 원하는 것은 이것이다.

if ([strCut compare:@"B"] == NSOrderedSame) { 
    ... 
} 

희망이 도움이됩니다.

관련 문제