C++程序 检查字符串是否仅包含数字
字符串是由双引号括起来的字符或文本集合。一个问题是我们如何在C++中检查字符串是否只包含数字?因此,为了解决这个问题,我们可以使用下面文章中提到的方法:
例如:
“125” -> True
“1h25” -> False
“012” -> True
检查C++中字符串是否仅包含数字的方法
有几种检查字符串是否只包含数字的方法,这些方法包括:
- 使用ASCII值
- 使用isdigit( )函数
- 使用all_of()和isdigit()
1. 使用ASCII值进行检查
每个字符有自己独特的ASCII值,因此,要检查字符串是否为数字,我们只需检查字符串中字符的ASCII值,如果所有字符都是数字,则我们可以说该字符串仅包含数字。
'0'的ASCII值为48,'9'的ASCII值为57
例如:
// C++程序演示
// 使用ASCII值进行检查
#include <iostream>
using namespace std;
void is_digits(string& str)
{
for (char ch : str) {
int v = ch; // 转换为ASCII值
if (!(ch >= 48 && ch <= 57)) {
cout << "False" << endl;
return;
}
}
cout << "True" << endl;
}
// 主函数
int main()
{
string str = "125";
is_digits(str);
str = "1h34";
is_digits(str);
str = "012";
is_digits(str);
return 0;
}
输出
True
False
True
2. 使用isdigit()函数进行检查
is_digit()函数用于检查字符是否为数字。因此,我们可以在循环中使用此函数一一检查字符是否为数字。
例如:
#include <bits/stdc++.h>
using namespace std;
void is_digits(string& str)
{
for (char ch : str) {
if (!isdigit(ch)){
cout << "False" << endl;
return;
}
}
cout << "True" << endl;
}
int main()
{
string str = "125";
is_digits(str);
str = "1h34";
is_digits(str);
str = "012";
is_digits(str);
return 0;
}
输出
True
False
True
3. 使用all_of()和isdigit()进行检查
all_of()和isdigit()可以一起检查字符串中的所有字符是否都为数字。这两个是重建函数,用于执行此任务。
语法:
all_of(string_name.begin(), str_name.end(), ::isdigit);
函数的解释:
isdigit过程被使用。
- int isdigit( int ch );
- 比较所传递的字符ch是否为‘0”1’…’9’
all_of()
- 它基于元素逐个地执行给定的方法,并作为AND操作符。
- 如果所有元素都返回True,则all_of()返回True。
- 只要有一个错误,就返回False。
例如:
// C++程序,使用all_of()和isdigit()函数检查方法
#include <bits/stdc++.h>
using namespace std;
// 输出布尔值
void print(bool x)
{
if (x)
cout << "True" << endl;
else
cout << "False" << endl;
}
// 检查函数
bool is_digits(string& str)
{
return all_of(str.begin(), str.end(), ::isdigit);
}
// 主程序
int main()
{
string str = "125";
print(is_digits(str));
str = "1h34";
print(is_digits(str));
str = "012";
print(is_digits(str));
return 0;
}
输出
True
False
True