C++におけるiostreamとiostream.hの違いを徹底解説
C++のiostreamとiostream.hは何が違うのか?
C++の入出力ストリームを扱う際、古いコードでは「iostream.h」、現代のコードでは「iostream」というヘッダファイルを目にすることがあります。一見似ているこの2つですが、実は歴史的背景も役割もまったく異なります。本記事では、その違いをわかりやすく解説します。
iostream.h:標準化以前のヘッダファイル
「iostream.h」は、1990年代前半に使われていた初期のI/Oストリームライブラリ向けのヘッダファイルです。これはAT&Tによって開発され、当時の初期のC++コンパイラで使用されていました。重要なポイントとして、この時代のC++はまだ標準化されておらず、処理系ごとに仕様が異なる状態でした。
iostream:C++標準ライブラリのヘッダファイル
一方、「iostream」はC++標準ライブラリで採用されている公式のヘッダファイルです。最初のC++国際規格(ISO/IEC 14882)が発行された1998年に導入され、標準入出力ストリーム(std::cin、std::coutなど)へのアクセス手段を提供します。標準化に伴い、これらの機能はstd名前空間内に定義されるようになった点も大きな変更点です。
「iostream.h」は標準規格に存在しない
興味深いことに、C++の標準規格で「iostream.h」に言及したことは一度もありません。しかし、標準化以前の参考文献、例えば1990年刊行の『Annotated C++ Reference Manual(注釈付きC++リファレンスマニュアル)』では、このヘッダファイルが実際に使用されていました。そのため、古い書籍や教材にはiostream.hを使ったサンプルコードが今でも残っています。
まとめ
- iostream.h:標準化以前(1990年代前半)にAT&Tの初期C++で使われていた非標準のヘッダファイル。
- iostream:1998年のC++標準規格で正式に採用された標準ライブラリのヘッダファイル。
現在のC++開発では、#include <iostream>を使用し、std名前空間経由で入出力機能にアクセスするのが正しい作法です。古いコードを扱う場合を除き、iostream.hを使うことは避けましょう。
-
【C++】前置インクリメント「++i」と後置インクリメント「i++」の違いとは?
C++のインクリメント演算子「++」には、前置(prefix)と後置(postfix)の2つの形式があり、それぞれ動作に大きな違いがあります。前置インクリメント(++i):変数 i の値を先に1増やし、その増加後の新しい値が式の値になります。つまり、「まず増加してから値を返す」動作です。後置インクリメント(i++):変数 i の値は1増やされますが、式の値としては増加前の元の値が使われます。つまり、「まず値を返してから増加する」動作です。サンプルコード実際のコードを見ながら、その違いを詳しく確認してみましょう。#include<iostream> using namespace s
-
C++におけるドット演算子(.)とアロー演算子(->)の違いを徹底解説
C++では、ドット演算子(.)とアロー演算子(->)はどちらもクラスのメンバーにアクセスするために使用されますが、それぞれ使用される場面が異なります。C++において、class、struct、unionとして宣言された型はすべて「クラスタイプ」とみなされるため、以下の説明はこれら3つすべてに当てはまります。基本的な使い分けa.b は、b がオブジェクト a(またはオブジェクトへの参照[1])のメンバーである場合にのみ使用できます。つまり、a.b の形式では、a は常にクラスの実際のオブジェクト(またはその参照)でなければなりません。a->b は、本質的に (*a).b の省略記法で