C ++ソースコードをコンパイルする方法(「iostream.hが見つかりません」エラー)


20

私はC ++やプログラミング言語について議論したくありません!私はちょうどhelloworld.cppのコンパイルについてlinux ubuntuで何が間違っているのか知りたいです!

私はC ++を学んでいるので、私の手順は次のとおりです。

vimでhello.cppを開き、これを記述します

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}

だから、その後、私はこれを端末で試しました

g++ hello.cpp

そして、出力は

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

何を指示してるんですか?私にとって役立つステップバイステップガイドはありますか?


2
誰もがこの質問をトピック外として閉じることを投票することを検討している場合:これは本当にプラットフォーム固有の問題です.Windows用の最も人気のあるC ++コンパイラ(Microsoft Visual C ++)はこの構文を受け入れますが、他のほとんどのコンパイラ(g++Ubuntu を含む)受け入れないでください。
エリアケイガン

#名前空間stdを使用して<iostream>を含めます。int main(){cout << "Hello World"; 0を返します。}この缶の仕事...

回答:


43

使用する必要#include <iostream>がありiostream.hます。.hのフォームは、非常に古いと年で廃止されました。

ここで、.h.h以外のフォームで知りたいと思われる以上のものを読むことができます:http : //members.gamedev.net/sicrane/articles/iostream.html

(さらに、書くstd::coutか、行を持たusing namespace std;なければなりませんcout。そうしないと、次のエラーは、コンパイラの定義が見つからないことに関するものになります。)


4
@gabriel C ++には1980年代半ばにまで遡る長い歴史があります。現在、いくつかの公開された標準がありますが、最新のもの(C ++ 11)は今年初めにリリースされ、前のもの(今日すべてのコンパイラーが従うもの)は2003年(C ++ 03)に遡ります。あなたがリンクしたガイドは、それが言及しているコンパイラソフトウェアから判断すると、それよりもずっと古いようです(Wikipediaによれば、Borland Turbo C ++は1994年に廃止されました)。C ++ 03標準に準拠したチュートリアルを選択すると、コードは現在利用可能なLinuxディストリビューションで動作します。
リッカルドムリ

1
あなたの質問のような@gabrielルックスはすでにStackOverflowの上で回答されていますstackoverflow.com/questions/909323/...
リッカルドMurriを

1
また必要かもしれません:sudo apt-get install build-essential
david6

2
@ david6:ビルドエッセンシャルがインストールされていますがiostream.h、システムにインストールされていません。実際、C ++ヘッダーファイルはlibstdc ++-devによってインストールされます。これは、C ++コンパイラパッケージg ++に必要であり、これはbuild-essentialに必要です。そのため、単純なC ++プログラムをコンパイルするためにbuild-essentialは必要ありません。g++パッケージをインストールするだけで十分です。
リッカルドムリ

1
単に取得するためにcoutせず仕事にstd::接頭辞、using std::cout;に好適ですusing namespace std;using不要な名前空間namespaceから識別子を持ち込まstdず、独自のプログラムの名前と競合する可能性があるため、複数のステートメント(なし)でも一般に優れています。
エリアケイガン

15

に変更する必要iostream.hがありiostreamます。私もあなたと同じエラーを受け取っていましたが、私がiostream.hちょうどに変更したときiostream、それは適切に機能しました。たぶんあなたのためにも働くでしょう。

つまり、次の行を変更します。

#include <iostream.h>

代わりにこう言ってください:

#include <iostream>

標準で定義されているC ++標準ライブラリヘッダーファイルには、.h拡張子はありません。

Riccardo Murriの回答で述べたようcoutに、完全修飾名std::coutで呼び出すか、次の2行のいずれかを使用する必要があります(#includeディレクティブより下、他のコードより上が望ましい)。

using namespace std;
using std::cout;

2番目の方法は、特に深刻なプログラミングプロジェクトに適していると考えられます。名前空間std::cout内のすべてのstd名前(プログラムで使用される名前を妨げる可能性のある名前)を取り込むのではなく、にのみ影響するためです。


素晴らしい答え。@gabrielの質問に答えることで、私が長年抱えていたいくつかの混乱を解決しました。
同型
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.