2

現在、バイナリ コードを含む文字列を保存しようとしています。

この文字列をテキスト ファイルに書き込もうとすると、必要に応じて 8 ビットのチャンクに格納するのではなく、0 と 1 の各文字を文字列形式で格納するだけです。これにより、0 と 1 のそれぞれを格納するために 8 ビットを使用することを考えると、ファイルが意図したよりも大きくなります。

文字列を .txt ファイルではなく .bin ファイルに書き込む必要がありますか? もしそうなら、どうすればこれを行うことができますか。可能であれば、実際のコードを使用した例です。

事前にアドバイスをいただきありがとうございます。

   string encoded = "01010101";    
   ofstream myfile;   
   myfile.open ("encoded");   
   myfile <<  encoded;   
   myfile.close();   

明確化: 1 と 0 で構成される文字列 (ハフマン ツリーの結果) があります。この文字列を 8 ビットのチャンクに分割したいと考えています。この文字列で表される各文字を圧縮ファイルに書き込みたいと考えています。

4

3 に答える 3

1

コードを表示していないので推測しているだけですが、文字を含む文字列があるようです '1''0'. もちろん、それをファイルに書き込めばテキストになります。最初に整数に変換する必要があります。

任意の基数の文字列を整数に変換する関数については、 egstd::stoiまたはを参照してください。std::strtol

于 2013-03-23T14:21:59.647 に答える
0

文字列を .txt ファイルではなく .bin ファイルに書き込む必要がありますか?

あなたがそう望むなら...でも、それも違いはありません。ofstreamファイル名は気にしません。文字列をバイト ( ) に変換し、uint8_tそのバイトをファイルに書き込むだけです。

string s = "10101010";
uint8_t byte = strtoul(s.c_str(), NULL, 2);
myfile << byte;
于 2013-03-23T14:22:38.920 に答える