c++ - 为什么它总是给我大于 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;
}
解决方案
我想到了
因为 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;
推荐阅读
- .net - .Net core Embedde Resources 返回更少的文件
- elasticsearch - 您可以在 Elasticsearch 的自动创建索引中将字段设置为 not_analyzed 吗?
- spring - 使用 Java 的 Spring Boot 中的全栈开发究竟是什么?
- javascript - 这个关键字随叫随到
- android - 有没有办法将正在运行代码的当前应用程序带到前台 Xamarin Forms - Android
- ios - iOS:在不干扰 LLDB 的情况下设置 Mach 异常处理程序
- node.js - 加载资源失败:net::ERR_CONNECTION_REFUSED socket.io
- c# - 图像检测优化
- command - 我正在尝试使用命令提示符 win 10 关闭一个特定的 chrome 选项卡
- javascript - txt 文件中的数字未排序