2011-08-07 26 views
0

iOSで文字列比較をネットワークストリームから取得した文字列で実行しようとしています。iOS:バッファや文字列から空文字を削除するにはどうすればよいですか?

ストリームを読み取るコードは:

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]; 
     } 
    } 

他端のサーバは常に(0)バッファを満たすために、データの最後に配置さCHRと、1024バイトの応答を生成します。

私は文字列比較行うと:

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

を文字列がnull文字の応答とたくさんcontaingsおそらくので、私はいつも、陰性の結果を取得します。

文字列への応答を読み込むときに空の文字をバッファから取り除きたいのですが、iOSでこれを行うことに何の不満もありません。

ヘルプありがとうございました!

ありがとうございました。

デーブ

答えて

0

あなたのコードが機能しない理由について間違った仮定をしています。

変更:

if (strCut == @"B") 

へ:

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

今後の参考のためには、仮定をしたことがない - 問題が何であるかを確認するために、デバッガやその他のツールを使用します。また、Objective-Cの入門書を読むことを検討することもできます。

+0

ありがとうございます - 目的Cはprooving ...難しいです! – user867358

0

問題はiOSが低いレベルなのでおそらく==が実際には文字列ではなくアドレスを比較しているためです。あなたが望むのはこれです。

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

希望します。

関連する問題