使用for_each循环c ++的二进制到十进制转换(位置表示法)

时间:2013-10-27 15:04:08

标签: c++ string algorithm binary

我正在使用位置符号方法将二进制转换为十进制和它的不同我想没有人尝试过它我想,在这个我用的是for_each循环 以下是一些步骤:

  • 将二进制文件存储为字符串

- 使用for_each循环从字符串中一次取出一个数字并进行操作。

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");
}

here is full code

存在逻辑错误。

2 个答案:

答案 0 :(得分:0)

我不确定你究竟是在问什么,因为你没有提出问题。但是,我认为您想知道为什么会出现编译器错误:

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

(如果这个问题包含在问题中会很好)

您收到此错误是因为您尝试使用未在程序中声明的std :: for_each。它在&#34;算法&#34;中定义。标题,所以要解决这个问题,你必须添加

#include <algorithm>

在文件开头的某处。

然而,完整代码还有一些其他问题(应该包含在你的问题中),例如:你的全局变量u永远不会被修改,因为你在bitodec中声明了一个新的临时代码&#39 ; s如果阻止并修改这个。

因此,正如Joachim Pileborg在评论中提到的那样,简单地使用std :: stoi会更容易(并且显然不易出错)。

我希望这会有所帮助; - )

答案 1 :(得分:0)

正如the documentation of 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]