C++における16進数文字列から整数への変換方法


方法1: std::stoiを使用する方法

#include <iostream>
#include <string>
int main() {
    std::string hexString = "1A";  // 16進数文字列
    int decimal = std::stoi(hexString, nullptr, 16);
    std::cout << "変換結果: " << decimal << std::endl;
    return 0;
}

この方法では、std::stoi関数を使用して16進数文字列を整数に変換します。第三引数には基数を指定します。16進数の場合は基数として16を指定します。

方法2: std::stringstreamを使用する方法

#include <iostream>
#include <string>
#include <sstream>
int main() {
    std::string hexString = "1A";  // 16進数文字列
    int decimal;
    std::stringstream ss;
    ss << std::hex << hexString;
    ss >> decimal;
    std::cout << "変換結果: " << decimal << std::endl;
    return 0;
}

この方法では、std::stringstreamを使用して16進数文字列を整数に変換します。std::hexマニピュレータを使用して基数を16進数に設定し、その後、変換したい文字列をストリームに挿入します。最後に、ストリームから整数を抽出します。

方法3: strtolを使用する方法

#include <iostream>
#include <cstdlib>
int main() {
    const char* hexString = "1A";  // 16進数文字列
    char* endPtr;
    long decimal = strtol(hexString, &endPtr, 16);
    if (*endPtr != '\0') {
        std::cout << "変換エラー" << std::endl;
        return 1;
    }
    std::cout << "変換結果: " << decimal << std::endl;
    return 0;
}

この方法では、C標準ライブラリのstrtol関数を使用して16進数文字列を整数に変換します。第二引数には変換が終了した位置を指すポインタを渡し、変換エラーをチェックすることができます。

これらの方法を使用することで、C++で16進数の文字列を整数に変換することができます。使用する方法はコンテキストや好みによって異なる場合があります。適切な方法を選択してください。