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

C++で文字列を数値に、またはその逆に変換する方法を解説

はじめに

この記事では、C++における「文字列から数値への変換」と「数値から文字列への変換」という2つの処理方法を解説します。まずは文字列から数値への変換から見ていきましょう。

文字列から数値への変換

ここでは、数値を表す文字列を整数型のデータに変換する方法を紹介します。この問題は、atoi() 関数を使うことで簡単に解決できます。この関数は文字列を引数として受け取り、それを整数型のデータに変換して返します。

atoi() 関数は <cstdlib> ヘッダに含まれています。

入力: 数値文字列 "1234"
出力: 1234

アルゴリズム

ステップ1: 数値文字列を用意する
ステップ2: atoi() 関数を使って整数に変換する
ステップ3: 結果を出力する
ステップ4: 終了

サンプルコード

#include<iostream>
#include<cstdlib>
using namespace std;
main() {
    int n;
    char num_string[20] = "1234";
    n = atoi(num_string);
    cout << n;
}

実行結果

1234

数値から文字列への変換

次に、数値(整数、浮動小数点数、その他の数値型データ)を文字列に変換する方法を見ていきます。

ロジックは非常にシンプルです。ここでは sprintf() 関数を使用します。この関数は、値や行をコンソールではなく文字列バッファに出力するための関数です。これが printf() との唯一の違いです。第一引数には、変換結果を保存したい文字列バッファを指定します。

入力: ユーザーが数値(例: 42.26)を入力する
出力: その数値に対応する文字列(例: "42.26")が返される

アルゴリズム

ステップ1: ユーザーから数値を入力してもらう
ステップ2: 結果を格納するための空の文字列バッファを作成する
ステップ3: sprintf() を使って数値を文字列に変換する
ステップ4: 終了

サンプルコード

#include<stdio.h>
main() {
    char str[20]; // 数値を格納する空の文字列を作成
    float number;
    printf("Enter a number: ");
    scanf("%f", &number);
    sprintf(str, "%f", number); // sprintf関数で数値を文字列に変換
    printf("You have entered: %s", str);
}

実行結果

Enter a number: 46.3258
You have entered: 46.325802

補足: モダンC++での変換方法

C++11以降では、より安全で簡潔な方法として std::stoi()std::to_string() が利用できます。これらは <string> ヘッダに含まれており、変換に失敗した場合の例外処理にも対応しているため、現代のC++プログラミングではこちらの使用が推奨されます。

#include<iostream>
#include<string>
using namespace std;
main() {
    string s = "1234";
    int n = stoi(s);           // 文字列から整数へ変換
    string str = to_string(n); // 整数から文字列へ変換
    cout << n << " " << str;
}

atoi()sprintf() はC言語由来の関数であり手軽に使える一方、バッファサイズの管理やエラー処理を自分で行う必要があります。用途に応じて使い分けるとよいでしょう。

  1. C言語で文字列⇔数値の相互変換を行う方法|sscanf関数とsprintf関数の使い方

    はじめにC言語のプログラミングにおいて、「文字列から数値への変換」および「数値から文字列への変換」とは何を意味するのでしょうか?本記事では、標準ライブラリ関数を使った双方向の変換方法を、構文・サンプルコード・実行結果とあわせて解説します。解決策:使用する2つの関数C言語には、この変換を実現するための関数が用意されています。sscanf() ― 文字列を数値に変換するsprintf() ― 数値を文字列に変換する文字列から数値への変換(sscanf)sscanf()関数を使うことで、文字列として格納されたデータを、書式指定子に従って解析し、数値として各変数に読み込むことができます。scanf()

  2. C++で文字列の部分文字列の総数を求める方法を解説

    この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文