c++ - C ++计算字符串中的偶数
问题描述
我在这里有一个脚本,它计算 int 类型 var 中的偶数。
#include <iostream>
#include <string>
int main()
{
std::cout << "Type a string: " << std::endl;
std::string s;
std::cin >> s;
unsigned int digits = 0, evens = 0;
for ( std::string::size_type i = 0; i < s.size() && s[i] >= '0' && s[i] <= '9'; i++ )
{
++digits;
evens += ( s[i] - '0' ) % 2 == 0;
}
std::cout << "The number has " << digits << " digit(s)." << std::endl;
std::cout << "The number has " << evens << " even digit(s)." << std::endl;
return 0;
}
我试图找到一种方法将其转换为字符串,以便我可以计算该字符串中有多少偶数或数字?
Type a string:
29 coaches 28
Even: 1
Found Numbers: 1
在python中它应该是这样的:
s = "75,41,14,8,73,45,-16"
evenNumbers = []
for number in s.split(","):
int_num = int(number)
if int_num % 2 == 0 and int_num > 0:
evenNumbers.append(int_num)
print("Even Numbers : \"{}\"".format(evenNumbers))
但我不知道如何在 C++ 中做到这一点
解决方案
您的循环将在第一个非数字字符处停止:i < s.size() && s[i] >= '0' && s[i] <= '9'
此外,您也在计算字母数字。所以你的循环需要先修复。我建议对此类问题使用正则表达式,它将非常通用:
const std::regex numbers("\\-?\\d+");
for (auto it = std::sregex_iterator(s.begin(), s.end(), numbers); it != std::sregex_iterator(); it++) {
++digits;
char lastCharacterOfMatchingString = *it->str(0).rbegin();
evens += (lastCharacterOfMatchingString - '0') % 2 == 0;
}
推荐阅读
- loops - 在循环中批量计数字符
- java - 如何在一定时间内启动 Andorid Wifi Scan?
- javascript - *ngIf 更改未在模板中检测到
- sql - 新的 SQL 学习者,使用 SQL Server Mang。工作室。我收到错误消息,消息 2714,级别 16,状态 6,第 3 行已经有一个名为
- python - 使用 Python 或 pyspark 读取基于位置的 CSV 文件
- android - 为什么我下载依赖项时我的 Flutter 应用程序无法编译?
- node.js - 如何使用 Firestore 从 DialogFlow fullfilment 上的 snap 中获取地图数组
- javascript - https 在 javascript 中发布类似于带有标头和参数的 curl -d 带有“请求”模块 nodejs npm
- javascript - 我有 google drive pdf 的共享链接,我必须使用 angular7 下载该 pdf。请告诉我该怎么做
- material-ui - 如何为material-ui-dropzone的容器设置样式