在编译时查询字符是否为数字
Query whether a char is a digit at compile time
我想在编译时检查给定的字符是否是数字。特别是我需要实现以下函数原型:
template<char c>
constexpr bool IsDigit();
澄清一下:我不必使用自定义实现。如果std
中已经有内置方法,我更喜欢这种方法。
这应该适用于 ASCII:
constexpr bool IsDigit(char c) { return c >= '0' && c <= '9'; } // ASCII only
如果您需要保留原型:
template<char C>
constexpr bool IsDigit() { return C >= '0' && C <= '9'; } // ASCII only
为了获得wchar_t
支持,您可以尝试以下方法:
constexpr bool IsDigit(wchar_t c)
{
return (c >= L'0' && c <= L'9') ||
(c >= L'u0660' && c <= L'u0669') || // Arabic-Indic
(c >= L'u06F0' && c <= L'u06F9') || // Extended Arabic-Indic
(c >= L'u07C0' && c <= L'u07C9') || // NKO
(c >= L'u0966' && c <= L'u096F') || // Devanagari
(c >= L'u09E6' && c <= L'u09EF') || // Bengali
(c >= L'u0A66' && c <= L'u0A6F') || // Gurmukhi
(c >= L'u0AE6' && c <= L'u0AEF') || // Gujarati
(c >= L'u0B66' && c <= L'u0B6F') || // Oriya
(c >= L'u0BE6' && c <= L'u0BEF') || // Tamil
(c >= L'u0C66' && c <= L'u0C6F') || // Telugu
(c >= L'u0CE6' && c <= L'u0CEF') || // Kannada
(c >= L'u0D66' && c <= L'u0D6F') || // Malayalam
(c >= L'u0E50' && c <= L'u0E59') || // Thai
(c >= L'u0ED0' && c <= L'u0ED9') || // Lao
(c >= L'u0F20' && c <= L'u0F29'); // Tibetan
// Missing check for Myanmar, Khmer, Mongolian, Limbu, New Tai Lue,
// Tai Tham Hora, Tai Tham Tham, Balinese, Sundanese, Lepcha, Ol Chiki,
// Vai, Surashtra, Kayah, Javanese, Cham, Meetei Mayek, Osmanya, Brahmi,
// Sora, Chakma, Sharada, Takri, Mathematical.
// For codes see http://www.unicode.org/ucd/
}
相关文章:
- 检查输入是否不是整数或数字
- 用于检查数字是否有数字或可被该数字的值整除的程序
- 如何知道n!是否可以表示为三个连续数字的乘法?
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 如何使用递归检查数字是否有重复数字?
- 查找数字是否为 2 的幂的时间复杂度
- 将 C 函数转换为 C++ 以检查数字是否有效
- C ++:检查它是否是类中的数字
- 检查数字是否为素数的算法
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 如何确定integer_sequence在编译时是否包含给定的数字?
- 有没有办法检查用户输入是否是数字?
- 如何知道文本文件中的输入是否是 C++ 中的有效数字
- C++:这两种将数字写入矩阵的方式之间是否存在显着的速度差异?
- 如何检查cin是否与数组中的一组数字匹配
- 如何检查字符串是否包含所有这些:数字、字母和特殊字符
- 在C/C++中检查数字是否为整数(不带scanf/gets/etc)
- 检查字符串是否是数字,然后将该数字转换为 int?