C++での文字列操作および数値変換の方法


s[i]-'0'は、C++の文字列を数値に変換するための一般的な方法です。sは文字列を表す変数であり、iは文字列内のインデックスを表します。この表現は、文字のASCIIコード値から文字 '0' のASCIIコード値を引くことによって、その文字を数値に変換します。

例えば、文字列 "12345" の3番目の文字 '3' を数値に変換する場合、s[2]-'0' と記述します。'3'のASCIIコード値は 51 であり、'0' のASCIIコード値は 48 です。したがって、s[2]-'0' は 51 - 48 = 3 となり、文字 '3' は数値 3 に変換されます。

この方法は、文字列内の各文字を数値に変換する際に使用されます。例えば、文字列内の数字を取り出して計算に使用する場合や、文字列を数値として比較する場合などに利用されます。

以下に、具体的なコード例を示します。

#include <iostream>
#include <string>
int main() {
    std::string s = "12345";

    for (int i = 0; i < s.length(); i++) {
        int num = s[i] - '0';
        std::cout << "Character: " << s[i] << ", Numeric value: " << num << std::endl;
    }

    return 0;
}

このコードでは、文字列 "12345" を数値に変換して表示する例を示しています。forループを使用して文字列内の各文字にアクセスし、s[i]-'0' を使って数値に変換しています。変換後の数値を出力することで、文字列内の各文字が正しく数値に変換されていることが確認できます。

このように、C++では文字列の操作や数値変換を容易に行うことができます。s[i]-'0' を使って文字列内の文字を数値に変換する方法は非常に一般的であり、多くの場面で活用されます。