gpt4 book ai didi

c++ - 未知位大小的模板化整数

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:47 24 4
gpt4 key购买 nike

如果我不知道字符串有多大,我如何将二进制/十六进制字符串转换为整数?

我要什么atoi/atol做,但我不知道要输出什么,因为我不知道该值是 32 位还是 64 位。另外,atoi不做十六进制,所以 101将变为 101而不是 0x101==257 .

我假设我需要使用 template<typename T> ,但我将如何创建变量以在函数中输出? T varname可以是任何东西,所以是什么让varname一个数字而不是指向某个随机位置的指针?

最佳答案

模板是编译时的东西。您不能在运行时选择数据类型。如果您的输入值不会超出 64 位类型的范围,则只需使用 64 位类型。

进行转换的一种方法(但绝不是唯一的方法)如下:

template <typename T>
T hex_to_int(const std::string &str)
{
T x;
std::stringstream(str) >> std::hex >> x;
return x;
}

std::string str = "DEADBEEF"; // hex string
uint64_t x = hex_to_int<uint64_t>(str);
std::cout << x << std::endl; // "3735928559"

关于c++ - 未知位大小的模板化整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103546/

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