繁体   English   中英

将字节的字符串转换为无符号的int

[英]Converting a string of a byte to an unsigned int

对于我要编写的应用程序,我需要能够在接口中编写GLEnable(GL_REPEAT)(完成此工作)。 用户这样做后,系统应使用正确的参数调用该函数。

到目前为止,我已经调用了正确的函数

((void (*)(unsigned int)) FunctionName)(Parameter); 但参数为0。

为了获得正确的参数,我将glew.h文件读取为文本文件,并将其解析为std :: map。 但是,我对如何将0x2901(及其余)从字符串转换为无符号int感到困惑。 如果有人碰巧知道如何做到这一点,将不胜感激帮助:)

提前致谢,

乔伊

也许您可以使用std::stringstream

std::string hexString = "0x2901";
std::istringstream instream(hexString);
unsigned int receiver = 0;
instream >> std::hex >> receiver;
std::cout << "Value parsed: " << receiver << std::endl;
std::cout << "Should be 10497" << std::endl;

输出:

解析值:10497
应该是10497

现场演示

您也可以尝试使用C样式( sscanf函数),如下所示:

    std::string hex = "0x2901";
    unsigned int x;
    sscanf(hex.c_str(), "%x", &x);
    printf("%#X = %u\n", x, x);

sscanf允许检查以下样式:

    std::string hex = "0x2901";
    unsigned int x = 0;
    if ( sscanf(hex.c_str(), "%x", &x) == 1) 
    {
        printf("%#X = %u\n", x, x);
    }
    else
    {
        printf("Incorrect string value\n");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM