C++ 如何遍历int?

C++ 如何遍历int?,c++,iterator,int,C++,Iterator,Int,我不知道如何迭代我的int,然后将结果放入int向量中。。我需要做这个游戏,非常感谢你的帮助。。老实说,我不知道如何使这个函数,这将迭代通过int cout << "\n PLEASE ENTER A 4 DIGIT BINARY! OR PROGRAM WILL EXIT \n\n\t"; cin >> binaryCin; evaluateNum(binaryCin); void MasterMind::evaluateNum(int &bin)

我不知道如何迭代我的int,然后将结果放入int向量中。。我需要做这个游戏,非常感谢你的帮助。。老实说,我不知道如何使这个函数,这将迭代通过int

cout << "\n PLEASE ENTER A 4 DIGIT BINARY! OR PROGRAM WILL EXIT \n\n\t";
cin >> binaryCin;
evaluateNum(binaryCin);     

void MasterMind::evaluateNum(int &bin) {
    // Need to iterate through binarycin and then put it in a vector<int>..
}
cout>binaryCin;
评价素;
虚空策划者::evaluateNum(内部和外部){
//需要迭代binarycin,然后将其放入向量中。。
}

好的,既然您不能使用字符串,我就必须更改我的答案。所以对于速度之囊。我会用数学。零有点问题,但是只要有一个if语句来检查除法后的占位符,然后从那里开始。我肯定有一个图书馆可以让这变得更容易,但听起来你不能使用其中任何一个,就像这是家庭作业一样。所以我们必须这样做。另外,不必担心小数点,因为它是int,它将删除小数点。soo 427/100=4.27,在int中仅为4。我相信编译器总是截断,如果我错了,请告诉我

void MasterMind::evaluateNum(int &bin)
{
    std::vector<int> numbers();
    int thousand,hundred,ten;
    int placeholder = 0;
    thousand = 1000;
    //bin = 4327
    placeholder = thousand / bin;
    //subtract the thousand position out of bin
    bin -= placeholder * thousand;
    numbers.push_back(placeholder);
    //now you have 327 
    //subtract the hundreds spot now
    hundred = 100;
    placeholder = hundred / bin;
    bin -= placeholder * thousand;
    numbers.push_back(placeholder);
    //now you have 27 now tens
    ten = 10;
    placeholder = ten / bin;
    bin -= placeholder * ten;
    //now you have just 7 in bin and 2 in place holder
    numbers.push_back(placeholder);
    numbers.push_back(bin);
}
void策划人::evaluateNum(int&bin)
{
std::向量数();
整数千,百,十;
int占位符=0;
千=1000;
//bin=4327
占位符=千/位;
//从箱子中减去1000个位置
bin-=占位符*000;
数字。推回(占位符);
//现在你有327个
//现在减去数百点
100=100;
占位符=百/箱;
bin-=占位符*000;
数字。推回(占位符);
//现在你有27张了
十=十;
占位符=十个/箱;
bin-=占位符*10;
//现在您只有7个in-bin和2个in-placeholder
数字。推回(占位符);
数字。推回(bin);
}

这就是如何分离用户传入的int。你应该检查一下,以确保数字不会太大。您需要为0添加一个检查/条件,如果值为0,则只需删除占位符即可。因此,不是
bin-=placeholder*ten
。它将是
bin-=10
;或者完全跳过它,我不记得C++是否处理026为026或者仅仅26。用0运行一次,你就会得到答案

这比做固定的基于数学的计算要好

 void MasterMind::evaluateNum(int &bin) {
        int n = bin;
        int i=0;
        vector<int> arr;
        while(n!=0){                    // loop will work for any size of binary number
            int tmp = n & 1;
            arr.push_back(tmp);
            n>>=1;
            i++;
        }
        std::reverse(arr.begin(),arr.end());  // since loop will give you reverse
}
void策划人::evaluateNum(int&bin){
int n=bin;
int i=0;
向量arr;
而(n!=0){//循环将适用于任何大小的二进制数
int tmp=n&1;
arr.push_back(tmp);
n> >=1;
i++;
}
std::reverse(arr.begin(),arr.end());//因为循环将为您提供反向
}

我没有看到任何您希望“未修改”的字符串,但如果您引用的是bin,则不会使用额外变量对其进行修改

,所以您是否期望1010?还是1234?或者1输入2输入3等等?你想在这个整数向量中得到什么?只有一个数字?是的,@Caperneoignis是一个4个字母的二进制数一个整数向量@cuniculus有4个字母正确如果他们像@Caperneoignis说的那样输入1010,那么你想在整数向量中是什么?{1,0,1,0}?我不想更改为字符串。。这就是重点。现在就睡吧