我想拆分一串二进制数,例如" 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时会被遗漏。
答案 0 :(得分:0)
while(inp>=0){
if(inp==0){
a[i]=0;
break;
}
//...
}
如果输入为零,则i
都不会增加,输入也不会更改,因此您将遇到无限循环。尝试修改input
- 部分中的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
答案 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;}
}