gpt4 book ai didi

c++ - 如何查找整数在其十六进制表示中是否包含字母

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:18 24 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个方法,该方法使用流操纵器确定整数在其十六进制表示中是否包含字母,而不使用任何 for 循环。一种方法是使用 getline 并做一些数学运算。有人可以提供有关所需计算类型的提示吗?

感谢您的帮助或使用循环算法,但我正在寻找不会遍历字符串的东西

最佳答案

使用 C++ ostringstreamstring:

bool hasHexDigits(int number)
{
std::ostringstream output;
output << std::hex << number;
return output.str().find_first_of("abcdefABCDEF") != string::npos;
}

编辑:其他解决方案,不使用流。它具有更好的性能(无分支)和内存明智(无分配),但对于您的“作业”来说可能太高级了:

template<int I> struct int_to_type
{
static const int value = I;
};

inline bool __hasHexCharacters(int number, int_to_type<0>)
{
return false;
}

template <int digitsLeft>
inline bool __hasHexCharacters(int number, int_to_type<digitsLeft>)
{
return ((number & 0xF) > 9) | __hasHexCharacters(number >> 4, int_to_type<digitsLeft-1>());
}

inline bool hasHexCharacters(int number)
{
return __hasHexCharacters(number, int_to_type<2 * sizeof(int)>());
}

关于c++ - 如何查找整数在其十六进制表示中是否包含字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com