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

【C/C++入門】atol()・atoll()・atof()関数で文字列を数値に変換する方法

C/C++では、数字の並びとして表現された文字列を数値として扱いたい場面がよくあります。そんなときに便利なのが、標準ライブラリに用意されている文字列変換関数です。本記事では、atol()atoll()atof() の3つの関数について、それぞれの役割・構文・具体的な使用例をわかりやすく解説します。


atol()関数

atol()関数は、文字列をlong型の整数に変換するための関数です。変換が行われなかった場合は0を返し、変換に成功した場合は変換後のlong int値を返します。

C++におけるatol()の構文は以下のとおりです。

long int atol(const char *string)

この関数を使用するには、ヘッダーファイル <cstdlib>(C言語では <stdlib.h>)をインクルードする必要があります。

以下は、C++でのatol()の使用例です。

使用例

#include <bits/stdc++.h>
using namespace std;
int main() {
   long int a;
   char str[20] = "538756";
   a = atol(str);
   cout << "文字列をlong intに変換した結果 : " << a << endl;
   return 0;
}

出力結果

文字列をlong intに変換した結果 : 538756

atoll()関数

atoll()関数は、文字列をlong long型の整数に変換するための関数です。atol()よりも大きな桁数の整数を扱える点が特徴です。変換が行われなかった場合は0を返し、変換に成功した場合は変換後のlong long int値を返します。

C++におけるatoll()の構文は以下のとおりです。

long long int atoll(const char *string)

以下は、C++でのatoll()の使用例です。

使用例

#include <bits/stdc++.h>
using namespace std;
int main() {
   long long int a;
   char str[20] = "349242974200";
   a = atoll(str);
   cout << "文字列をlong long intに変換した結果 : " << a << endl;
   return 0;
}

出力結果

文字列をlong long intに変換した結果 : 349242974200

atof()関数

atof()関数は、文字列をdouble型の浮動小数点数に変換するための関数です。小数点を含む数値文字列を扱うことができます。変換が行われなかった場合は0を返し、変換に成功した場合は変換後の浮動小数点数値を返します。

C++におけるatof()の構文は以下のとおりです。

double atof(const char *string)

以下は、C++でのatof()の使用例です。

使用例

#include <bits/stdc++.h>
using namespace std;
int main() {
   double a;
   char s[20] = "3492.42974200";
   a = atof(s);
   cout << "文字列を浮動小数点数に変換した結果 : " << a << endl;
   return 0;
}

出力結果

文字列を浮動小数点数に変換した結果 : 3492.43

3つの関数の違いまとめ

  • atol():文字列 → long int(長整数)
  • atoll():文字列 → long long int(より大きな範囲の整数)
  • atof():文字列 → double(浮動小数点数)

これらの関数はいずれも、変換に失敗した場合に単純に0を返す仕様になっています。そのため、「0」という正しい変換結果なのか、変換失敗による0なのかを区別できません。厳密なエラーチェックが必要な場合は、strtol()strtod() など、エンドポインタやエラー判定をサポートしている関数の利用を検討するとよいでしょう。

  1. 【C/C++】const int* と int* const の違いを徹底解説!宣言の読み方のコツも紹介

    はじめに:constとポインタの組み合わせ C/C++では、「const」と「ポインタ」を組み合わせた宣言が複数存在し、それぞれ意味が異なるため、初心者がつまずきやすいポイントの一つです。この記事では、代表的な4つのパターンを整理し、何が変更できて何が変更できないのかを具体例とともに解説します。 4つの基本パターン int* // intへのポインタ int const * // constなintへのポインタ int * const // intへのconstポインタ int const * const // con

  2. C++とC#におけるforeachループの使い方を徹底解説

    コレクションや配列の各要素を順番に処理したい場合、foreachループは非常に便利な構文です。従来のforループではインデックスの管理が必要でしたが、foreachを使えば要素そのものを直接取り出して処理できるため、コードがシンプルになり、バグも減らせます。この記事では、C++とC#それぞれにおけるforeachの書き方と実行例をわかりやすく解説します。 C++におけるforeach(範囲ベースforループ) C++には厳密には「foreach」という名前のキーワードは存在しませんが、C++11で導入された範囲ベースforループ(range-based for loop)が同等の機能を提供し