0

圧縮された出力を含む std::string を返す小さな XZ コンプレッサーのセットアップに成功しました。結果を処理するには、std::string を NSString に「変換」する必要があります。残念ながら、(エンコーディング?) 問題があります:

「abc」は良い例ではありませんが、かなり難しいことを示しています。

NSString *text = [_text string]; // Length is 3

std::string content = xz_compress([text UTF8String]); // Length is 60

NSString *convertedContent = [NSString stringWithCString:content.c_str() encoding:NSUTF8StringEncoding];

// convertedContent is (null) and 0 characters long

NSUnicodeStringEncoding を使用すると、NSString は少なくとも 2 文字の長さになりますが、std::string のものとは一致しません。

私の質問:

  • この方法は可能ですか / 好ましい方法ですか (それについてはすでに不明です)?
  • その場合: どのエンコーディングを使用する必要がありますか?

前もって感謝します!

ポール

4

1 に答える 1

1

xz_​​compress の出力はバイナリ データであると想定しています。NSData dataWithBytes:length:では、メソッドを使ってみませんか?おそらく、同じ理由でstring::data()代わりに試すこともできます:string::c_str

NSData* convertedContent = [NSData dataWithBytes:content.data() length:content.length()];
于 2011-07-31T20:58:33.647 に答える