C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++ビットセットの興味深い事実?


C ++プログラミング言語は、ビットセットという名前のc++標準テンプレートライブラリでコンテナを定義します。このビットセットコンテナは、ビットレベルで要素を処理するために使用されます。つまり、変数の各ビット、つまり、指定された値のバイナリ変換です。

1。ビットセットは文字列のようなものです −ビットセットはビットのコンテナです(有効なのは0と1のみ )。ビットセットの開始インデックス値と考慮される要素の数で指定された任意のビットセットでビットセットを作成できます。つまり、ビットセットのインデックス1から始まる2つの要素でビットセットを作成し、それをビットセットの最後に追加できます。ビットセット。

例-ビット文字列01001110のインデックス値2から始まる4つの要素をフィートする必要があります。このビットセットは要素0011を取ります これはビットセットの最後に追加されます。したがって、このメソッドで定義される8ビットビットセットの値は 00000011

#include <bitset>
#include <string>
#include <iostream>
int main() {
   std::string bit_string = "10010110";
   std::bitset<8> b1(bit_string, 1 , 4);
   std::cout << b1 << '\n' ;
   return 0;
}

出力

00000010

2。文字列からビットセットを構築する −作成時に使用される値が2種類しかない文字列がある場合。この文字列を、値をそれぞれの0/1表現と見なすビットセットに変換できます。

この概念をよりよく理解するために例を見てみましょう。

文字列「xyxxyyx」があります。これから、x=0およびy=1を考慮して、配列と同じ長さのビットセットを作成できます。 0100110として作成されたビットセット 。

このタスクを実行するためにライブラリに定義されたコンストラクタがあります-

bitset(str, offSet, size, zeroVal , oneVal) ;

これは、ビットセットを作成するために定義されたコンストラクターです。コンストラクターを深く掘り下げて、コンストラクターの各パラメーターが何を伝えるかを学びましょう。

str −ビットセットを作成するために考慮される文字列。

オフセット −文字列の文字列インデックス。

サイズ −作成するビットセットのサイズ。

zeroVal −0と見なされる文字列の値

oneVal −1と見なされる文字列の値]

#include <bitset>
#include <string>
#include <iostream>
using namespace std;
int main() {
   string bitstr = "xyxxyyyx";
   bitset<8> bits(bitstr, 0, bitstr.size(), 'x', 'y');
   cout <<"The bitset is : "<< bits << '\n';
}

出力

The bitset is: 01001110

3。ビットセットを文字列に変換する −ビットセットには、ビットセットを文字列に変換する機能があります。関数to_string() ビットセットの値を文字列に格納するために使用されます。文字列の長さはビットセットの長さと同じです。

文字列にビットセットの要素を格納する順序は、ビットセットの順序と同じです。つまり、文字列のビットセットの最初の要素の最初の要素です。

01010100の文字列変換 は「01010100」です。

メソッドのパラメータリストで指定することにより、0と1を任意の文字に置き換えることができます。これは、ビットセットの構築中に学んだことの逆です。

#include <iostream>
#include <bitset>
using namespace std;
int main() {
   bitset<8> b(19);
   cout<<"The value of the bitset is : "<<b<<endl;
   cout<<"The string conversion of the bitset is : "<<b.to_string()<<endl;
   cout<<"The string conversion by replacing 0 with T and 1 with P is : ";
   cout<< b.to_string('T', 'P')<<endl;
}

出力

The value of bitset is : 00010011
The string conversion of bitset is : 00010011
string conversion by replacing 0 with T and 1 with P is : TTTPTTPP

ビットセットで実行される他の多くの操作があります。また、使用できるビット演算子もいくつかあります。これらは、ここで説明するビットセットの基本的な機能とプロパティです。


  1. C++での文字列のトークン化

    このセクションでは、C++で文字列をトークン化する方法を説明します。 Cでは、文字配列にstrtok()関数を使用できます。ここに文字列クラスがあります。次に、その文字列から区切り文字を使用して文字列を切り取る方法を説明します。 C ++機能を使用するには、文字列を文字列ストリームに変換する必要があります。次に、getline()関数を使用して、タスクを実行できます。 getline()関数は、文字列ストリーム、出力を送信するための別の文字列、およびストリームのスキャンを停止するための区切り文字を受け取ります。 関数がどのように機能しているかを理解するために、次の例を見てみましょう。 サン

  2. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string