为什么它总是给我大于 4?

why does it give me bigger than 4 always?

本文关键字:大于 为什么      更新时间:2023-10-16

在我循环每个其他数字后,我试图获得大于 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;
}

我想通了

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

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

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

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