首页 > 解决方案 > 为什么它总是给我大于 4?

问题描述

在循环输入所有其他数字后,我试图获得大于 4 的数字,但问题是即使数字不大于 4,它也会一直给我大于4 的数字。谢谢!

 #include <iostream>
#include <vector>
#include <string>
using namespace std;
bool isvalidcc(const string& s)
{

    vector<char> v (s.begin(), s.end());
    for(auto i=0 ; i<v.size();i+=2)
    {

        if (v.at(i)>'4')
        {
            cout<<v.at(i)<<"bigger than 4"<<endl;
        }
        else
        {
            cout<<v.at(i)<<"smaller than 4"<<endl;

        }

    }
    return false;
}

int main()
{

    vector<string> cardnumbers = {
         "371449635398431"
    };

    int i;
    vector<string>::iterator itr;

    for (i = 1, itr = cardnumbers.begin(); itr != cardnumbers.end(); ++itr, i++) {
//        cout   << i << " "
//              << *itr
        ((isvalidcc(*itr)));
    }

    return 0;
}

标签: c++

解决方案


我想到了

因为 v.at(i) 是 char 而不是 int,所以它会将其转换为 ascii 代码。这意味着您必须以正确的方式将 char 转换为 int 。

if (v.at(i) - '0' >4)

- '0' 将以正确的方式将其转换为 int 否则它将返回错误的值,您可以通过创建一个新的 int 变量和 cout <<

int n = v.at(i);
cout << n;

推荐阅读