C++ 为什么我的If-Else永远不会评估为真?

C++ 为什么我的If-Else永远不会评估为真?,c++,c++11,if-statement,C++,C++11,If Statement,我要计算变量整数“num”除以每个数字的次数,得到一个干净的商(余数为0) 注:每个数字都被认为是唯一的,因此应统计相同的可等分数字的每次出现次数(即:对于222,答案为3) int-solver(int-num)//获取一个整数 { string numString=to_string(num);//将整数转换为字符串,以便我可以处理单个数字 int divisible=0;//将在“num”中存储一个可等分的数字计数 for(int x=1;x=1)//忽略数组中最后一个0或0的数字 ++x

我要计算变量整数“num”除以每个数字的次数,得到一个干净的商(余数为0)

注:每个数字都被认为是唯一的,因此应统计相同的可等分数字的每次出现次数(即:对于222,答案为3)

int-solver(int-num)//获取一个整数
{
string numString=to_string(num);//将整数转换为字符串,以便我可以处理单个数字
int divisible=0;//将在“num”中存储一个可等分的数字计数
for(int x=1;x=1)//忽略数组中最后一个0或0的数字
++x;
if(num%numString[x-1]==0)//这永远不会计算为真。为什么???
可除++;
}
返回可分//变量“num”中可平均分割的位数
}
这个函数总是返回0(变量int“divisible被初始化为0),因为递增它的if-else总是计算为false并被跳过。我已经检查并确保if-else参数包含有效的数字(它们都是整数).是不是因为它们都是整数,结果的小数部分在计算时永远不会达到?这是我能想到的最好的可能性,即使这样,我也不知道如何补救

  • 了解
    std::string
    的功能。不需要
    end
    begin
    来获取
    字符串的长度
  • numString[x-1]
    返回一个
    char
    ASCII码,而不是作为数值的数字。例如,十进制
    0
    的ASCII码是
    48
    。要获取单个数字的数值,可以执行以下操作:
    numString[x-1]-“0”
  • 了解
    std::string
    的功能。不需要
    end
    begin
    来获取
    字符串的长度
  • numString[x-1]
    返回一个
    char
    ASCII码,而不是作为数值的数字。例如,十进制
    0
    的ASCII码是
    48
    。要获取单个数字的数值,可以执行以下操作:
    numString[x-1]-“0”

  • 您有一个字符串。字符串包含字符。字符(即使是数字)也不是数字。
    0!=“0”
    。是否使用IDE?您可以创建一个变量
    int test=num%numString[x-1]
    然后看看什么测试equals@VictorTran我使用222表示num,测试返回22,即。。weird@Someprogrammerdude我怎样才能把这些字符串清晰地转换成整数?@WillNjundong我不认为这比你的更痛苦(但我承认我可以拆分一些说明,让初学者更清楚)-您的代码涉及迭代器、类似数组的对象(
    std::string
    )以及数字字符和整数之间的转换(
    '0'-0
    )我的代码只涉及循环和简单算术的简单<代码>。我需要一些C++书籍的章节来理解代码,而其中的第一章涵盖了理解我的所有需要。你有一个字符串。字符串包含字符。字符(即使它们是数字)。不是数字。
    0!=“0”
    。您使用的是IDE吗?您可以创建一个变量
    int test=num%numString[x-1]
    然后看看什么测试equals@VictorTran我使用222表示num,测试返回22,即。。weird@Someprogrammerdude我怎样才能把这些字符串清晰地转换成整数?@WillNjundong我不认为这比你的更痛苦(但我承认我可以拆分一些说明,让初学者更清楚)-您的代码涉及迭代器、类似数组的对象(
    std::string
    )以及数字字符和整数之间的转换(
    '0'-0
    )-我的代码只涉及< <代码>循环和简单算术>简单的<代码>。我需要一些C++书籍的章节来理解代码,而其中的第一章涵盖了理解我的所有需要的东西。我想我尝试过类似的事情,以及变量的长度和不合理的数字。根据我在线学习的
    string::length
    返回字符串中的字节数,与
    size()相同
    。指向的链接。您可以通过
    string::capacity
    获得内存大小。我想我之前尝试过类似的方法,以及variable.length,但得到了不合理的数字。根据我在网上学到的
    string::length
    返回与
    大小相同的字符串中的字节数()
    。指向的链接。您可以通过
    string::capacity
    int solver(int num) //gets an integer
    {
        string numString = to_string(num); //convert integer to string so i can manipulate individual digits
        int divisible=0; //will store a count of digits in "num" which can be divided evenly
    
        for (int x = 1; x <= (end(numString) - begin(numString))/*string length*/; x++)
        {
    
            if (numString[x-1] == 0 || (end(numString) - begin(numString))-x >=1) //ignore digits which are 0 and or 0s that are last in the array
                ++x;
    
            if (num % numString[x - 1] == 0) //THIS NEVER EVALUATES TO TRUE. HOW COME???
                divisible++; 
    
        }
        return divisible;  //number of digits in variable "num" which can be evenly divided
    }