C++ 拆分一个二进制数字符串,并将其存储在c++;

C++ 拆分一个二进制数字符串,并将其存储在c++;,c++,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; }

我想拆分一个二进制数字符串,例如“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时就会丢失它

while(inp>=0){
   if(inp==0){
     a[i]=0;
     break;
  }
  //...
}
如果输入为零,则
i
既不会递增,也不会更改输入,因此会运行一个无限循环。尝试修改
输入
i
(如果)-部分中的
if

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

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
std::string str;
std::向量数;
缓冲区>>str//将值读入字符串
for(char c:str)//循环字符串中的所有字符
数字。推回(c=='1'?1:0)//根据字符写零或一

您可以这样做,将
向量推入
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');}
}
#包括
#包括
使用名称空间std;
int main()
{
字符串输入=“0101011010”;
向量v;

对于(int i=0;i)您正在以一种过于复杂的方式进行此操作。放弃
istringstream
,只需循环原始字符串中的字符即可。如果是
'0'
,则在相应的数组元素中放入一个零;如果是
'1'
,则放入一个1。-'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;}
}