C++ 拆分一个二进制数字符串,并将其存储在c++;
我想拆分一个二进制数字符串,例如“0101011010”,并将其存储在int数组中。应该用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; }
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;}
}