📜  string hex to int c++ (1)

📅  最后修改于: 2023-12-03 15:35:10.059000             🧑  作者: Mango

将十六进制字符串转换为整数的方法 - C++

想要将一个十六进制字符串转换为整数?无问题!在本文中,我们将介绍该过程的几种方法。无论您选择哪种方法,我们将提供其详细说明和代码示例。

方法一:使用 stoi() 函数

stoi() 函数可以将字符串转换为整数,但它默认将字符串解释为十进制。有一种方法可以将它解释为十六进制:指定一个参数 nullptr,如下所示:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string hex_str = "1A";
    int hex_int = stoi(hex_str, nullptr, 16);
    cout << hex_int << endl; // 输出十进制的 26
    return 0;
}
方法二:使用 stringstream

stringstream 是 C++ 标准库中使用最广泛的字符串流之一。它提供了像 cincout 一样的输入和输出功能,因此我们可以使用 >> 运算符从输入流中提取整数。要将字符串解释为十六进制,我们需要在传递字符串之前设置 stringstream 的格式标志:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string hex_str = "1A";
    int hex_int;
    stringstream ss;
    ss << hex << hex_str; // 设置流格式,然后写入字符串
    ss >> hex_int; // 提取整数
    cout << hex_int << endl; // 输出十进制的 26
    return 0;
}
方法三:使用 sscanf() 函数

sscanf() 函数是一个可变参数函数,可以将输入字符串转换为不同类型的值。它的一个有用的特性是可以使用格式化字符串将字符串解释为十六进制整数:

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;

int main()
{
    string hex_str = "1A";
    int hex_int;
    sscanf(hex_str.c_str(), "%x", &hex_int);
    cout << hex_int << endl; // 输出十进制的 26
    return 0;
}
总结

以上就是在 C++ 中将十六进制字符串转换为整数的三种方法。无论您采用哪种方法,都可以在不同情况下轻松地转换字符串。如果您正在编写需要处理十六进制值的程序,这些方法可能会非常有用。