2
3
4
5
6
7
8
11#ifndef _MSTD_ISSTRNUM_HPP_
12 #define _MSTD_ISSTRNUM_HPP_
14 #include <mstd/config.hpp>
17_MSTD_WARNING(
"this is only available for c++17 and greater!");
20 #include <mstd/string_types.hpp>
23 inline bool isstrhex(
const std::string_view str) {
24 if (str.size() <= 2) {
return false; }
25 if (str[0] !=
'0' || str[1] !=
'x') {
return false; }
28 for (; i != str.size(); ++i) {
29 if ((str[i] <
'0' || str[i] >
'9') && (str[i] <
'a' || str[i] >
'f') && (str[i] <
'A' || str[i] >
'F')) {
37 inline bool isstroct(
const std::string_view str) {
38 if (str.size() <= 2) {
return false; }
39 if (str[0] !=
'0' || str[1] !=
'c') {
return false; }
42 for (; i != str.size(); ++i) {
43 if (str[i] <
'0' || str[i] >
'7') {
return false; }
49 inline bool isstrbin(
const std::string_view str) {
50 if (str.size() <= 2) {
return false; }
51 if (str[0] !=
'0' || str[1] !=
'b') {
return false; }
54 for (; i != str.size(); ++i) {
55 if (str[i] <
'0' || str[i] >
'1') {
return false; }
61 inline bool isstrnum(
const std::string_view str) {
62 if (str.empty()) {
return false; }
64 if (str.size() > 2 && str[0] ==
'0') {
65 if (str[1] ==
'b') {
return isstrbin(str); }
67 if (str[1] ==
'c') {
return isstroct(str); }
69 if (str[1] ==
'x') {
return isstrhex(str); }
73 while (str[i] ==
'+' || str[i] ==
'-') {
75 if (i == str.size()) {
return false; }
78 for (; i != str.size(); ++i) {
79 if (str[i] <
'0' || str[i] >
'9') {
return false; }
86 if (str.empty()) {
return false; }
88 if (str.size() > 2 && str[0] ==
'0') {
89 if (str[1] ==
'b') {
return isstrbin(str); }
91 if (str[1] ==
'c') {
return isstroct(str); }
93 if (str[1] ==
'x') {
return isstrhex(str); }
97 while (str[i] ==
'+') {
99 if (i == str.size()) {
return false; }
102 for (; i != str.size(); ++i) {
103 if (str[i] <
'0' || str[i] >
'9') {
return false; }
109 inline bool isstrfp(
const std::string_view str) {
110 if (str.empty()) {
return false; }
113 while (str[i] ==
'+' || str[i] ==
'-') {
115 if (i == str.size()) {
return false; }
118 while (str[i] >=
'0' && str[i] <=
'9') {
120 if (i == str.size()) {
return true; }
125 if (i == str.size()) {
return false; }
127 while (str[i] >=
'0' && str[i] <=
'9') {
129 if (i == str.size()) {
return true; }
#define _MSTD_HAS_CXX17
Definition config.hpp:45
Definition arithmetic_types.hpp:23
bool isstrunum(const std::string_view str)
Definition isstrnum.hpp:85
bool isstrhex(const std::string_view str)
Definition isstrnum.hpp:23
bool isstrfp(const std::string_view str)
Definition isstrnum.hpp:109
bool isstrbin(const std::string_view str)
Definition isstrnum.hpp:49
bool isstroct(const std::string_view str)
Definition isstrnum.hpp:37
bool isstrnum(const std::string_view str)
Definition isstrnum.hpp:61