拆分一串二进制数,并在c ++中存储一个int类型的数组

时间:2014-04-12 23:15:09

标签: c++

我想拆分一串二进制数,例如" 0101011010"并将其存储在int数组中。应该用c ++完成。

这就是我的尝试。

 istringstream buffer(inputstring);
    int inp;
    buffer >> inp; 
    int a[10];
    int i=0;
    while(inp>=0){

       if(inp==0){
           a[i]=0;
         break;
      }
       else{
           int value = inp%10;
           a[i]=value;
           inp=inp/10;
      }; 
      i++
    }

这个问题是,如果字符串包含" 0"在开始时,它被转换为int时会被遗漏。

2 个答案:

答案 0 :(得分:0)

while(inp>=0){
   if(inp==0){
     a[i]=0;
     break;
  }
  //...
}

如果输入为零,则i都不会增加,输入也不会更改,因此您将遇到无限循环。尝试修改input - 部分中的iif

/编辑:好的,你这样做的方式实在太复杂了。我不是复制和粘贴代码的大朋友,但这是我的方式:

std::string str;
std::vector<int> number;
buffer >> str;  //Read the value into a string
for(char c : str) //Loop over all characters in the string
    number.push_back(c == '1' ? 1 : 0); //Write zero or one depending on character

答案 1 :(得分:0)

你可以这样做,推进vector int s:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string input="0101011010";
    vector<int> v;
    for(int i=0; i<input.size(); i++)
    {v.push_back(input[i]-'0');}
}

但如果你真的想使用数组,你可以这样做:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    string input="0101011010";
    int arr[10];
    for(int i=0; i<10; i++)
    {arr[i]=input[i]-'0';}
    for(int i=0; i<10; i++)
    {cout << arr[i] << endl;}
}