0

私は位置表記法を使用していますバイナリを10進数に変換しますが、その違いはまだ誰も試していないと思いますが、これではfor_eachループを使用していますここにいくつかの手順があります:

  • バイナリを文字列として保存

-for_each ループを使用して文字列から一度に 1 桁ずつ取り出して演算を実行します。

int main(void)
{
string input;
cout << "Enter string of binary digits " ;
cin >> input ;
for_each(input.begin(), input.end(),bitodec);
cout << "Decimal equivalent is  " << u << endl;
 system("PAUSE");
}

ここに完全なコードがあります

論理エラーがあります。

4

2 に答える 2

0

あなたが質問を述べていないので、あなたが何を求めているのか正確にはわかりません。ただし、コンパイラ エラーが発生する理由を知りたいと思います。

prog.cpp:13:48: error: ‘for_each’ was not declared in this scope
  for_each(input.begin(), input.end(),bitodec);

(これが質問に含まれていればよかったのに)

プログラムで宣言されていない std::for_each を使用しようとすると、このエラーが発生します。「アルゴリズム」ヘッダーで定義されているため、この問題を修正するには、追加する必要があります

#include <algorithm>

ファイルの先頭のどこかに。

ただし、完全なコードには他にもいくつかの問題があります(実際には質問に含まれているはずです)。たとえば、グローバル変数 u は変更されません。これは、bitodec の if ブロックで新しい一時的なものを宣言し、これを変更するためです。 1。

したがって、Joachim Pileborg がコメントで述べたように、単純に std::stoi を使用する方がはるかに簡単です (そして明らかにエラーが発生しにくくなります)。

これが役立つことを願っています;-)

于 2013-10-27T15:29:04.617 に答える
0

のドキュメントがstd::bitset言うように:

ビットセットは、標準の論理演算子で操作でき、文字列と整数の間で変換できます。

したがって、使用std::bitsetすることは、目標を達成するための簡単な方法です。例えば:

std::string bit_string = "110010";
std::bitset<8> b3(bit_string);       // [0,0,1,1,0,0,1,0]
std::bitset<8> b4(bit_string, 2);    // [0,0,0,0,0,0,1,0]
std::bitset<8> b5(bit_string, 2, 3); // [0,0,0,0,0,0,0,1]
于 2013-10-27T17:22:24.880 に答える