C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のstrtol()関数とは?文字列をlong整数に変換する使い方を解説


C++のstrtol()関数は、文字列をlong型の整数に変換するための関数です。この関数は、変換された最後の有効な文字の次の文字をポインタに設定する機能も持っています。strtol()関数はcstdlibライブラリに含まれており、以下のような構文で定義されています。

long int strtol(const char* str, char ** end, int base)

strtol()関数の引数

strtol()関数は3つの引数を受け取ります。それぞれの役割は以下の通りです。

  • str: 変換対象となる文字列の先頭へのポインタです。
  • str_end: 関数によって自動的に設定されるポインタです。最後の有効な文字の後にまだ文字が残っている場合はその次の文字を指し、残っていない場合はNULLが設定されます。
  • base: 数値の基数(進数)を指定します。指定できる値は0、2、3、…、35、36です。

戻り値

この関数は変換されたlong int型の値を返します。変換可能な文字が存在しない場合や、ポインタがNULLを指している場合には0を返します。

使用例1:基数10の場合

まずは最も一般的な基数10(10進数)で文字列を変換する例を見てみましょう。

#include <iostream>
#include<cstdlib>
using namespace std;
main() {
    // 2つの文字列を定義
    char string1[] = "777HelloWorld";
    char string2[] = "565Hello";
    char* End; // 終端ポインタ
    int base = 10;
    int value;
    value = strtol(string1, &End, base);
    cout << "The string Value = " << string1 << "\n";
    cout << "Long Long Int value = " << value << "\n";
    cout << "End String = " << End << "\n"; // 整数以降の残りの文字列
    value = strtol(string2, &End, base);
    cout << "\nThe string Value = " << string2 << "\n";
    cout << "Long Long Int value = " << value << "\n";
    cout << "End String = " << End; // 整数以降の残りの文字列
}

出力結果

The string Value = 777HelloWorld
Long Long Int value = 777
End String = HelloWorld
The string Value = 565Hello
Long Long Int value = 565
End String = Hello

このように、文字列「777HelloWorld」からは先頭の数値部分「777」がlong整数として抽出され、終端ポインタには残りの文字列「HelloWorld」が格納されます。同様に「565Hello」からは「565」が抽出され、「Hello」が残りの文字列として取得できます。

使用例2:基数16の場合

次に、基数を16(16進数)に変更した例を見てみましょう。指定した基数で解釈された文字列は、10進数形式で出力されます。

#include <iostream>
#include<cstdlib>
using namespace std;
main() {
    // 2つの文字列を定義
    char string1[] = "5EHelloWorld";
    char string2[] = "125Hello";
    char* End; // 終端ポインタ
    int base = 16;
    int value;
    value = strtol(string1, &End, base);
    cout << "The string Value = " << string1 << "\n";
    cout << "Long Long Int value = " << value << "\n";
    cout << "End String = " << End << "\n"; // 整数以降の残りの文字列
    value = strtol(string2, &End, base);
    cout << "\nThe string Value = " << string2 << "\n";
    cout << "Long Long Int value = " << value << "\n";
    cout << "End String = " << End; // 整数以降の残りの文字列
}

出力結果

The string Value = 5EHelloWorld
Long Long Int value = 94
End String = HelloWorld
The string Value = 125Hello
Long Long Int value = 293
End String = Hello

最初の文字列は「5E」を含んでいるため、16進数として解釈すると10進数の94になります。また、2番目の文字列「125」も16進数として解釈すると10進数の293になります。このように、strtol()関数を使えば基数を自由に指定して文字列を整数に変換できるため、数値解析や入力データの処理など、さまざまな場面で活用できます。

  1. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s

  2. PHPのpi()関数とは?円周率(π)を取得する方法をわかりやすく解説

    PHPのpi()関数は、円周率(π)の値を返す組み込み関数です。数学的な計算、特に円の面積や円周の長さを求める際に活用されます。構文pi()パラメータこの関数にはパラメータはありません。引数を指定せずにそのまま呼び出します。戻り値pi()関数は、円周率の近似値を浮動小数点数(float型)として返します。3.1415926535898使用例基本的な使い方は以下の通りです。<?php echo(pi()); ?>実行結果3.1415926535898M_PI定数を使った別の方法PHPでは、pi()関数の代わりに定義済み定数M_PIを使用することでも、同じ円周率の値を取得できま