プロが教えるわが家の防犯対策術!

一昔前のC言語では、#include <stdio.h>などのものを、C ++言語では、#include <iostream>の1行で済ませるということでしょうか?
だけど、C + +言語で、#include<stdio.h>を使いたければ使うことは出来ますよ。だけど、#include<iostream>だけで、済みますよ。という事でしょうか?つまり、#include<iostream>は、全ストリームつまり、全ファイル・全ライブラリを1つにまとめたという事でしょうか?教えて頂けると幸いです。
で、チャットGPTに聞きました。
C++言語において、#include <iostream>はC言語の#include <stdio.h>に似た機能を果たしますが、直接的な一対一の比較ではありません。#include <iostream>はC++の標準入出力ライブラリであり、std::coutやstd::cinなどを含む機能を提供します 一方で、#include <stdio.h>はC言語の標準入出力ヘッダであり、C++でも使用可能ですが、C++の標準ライブラリである<iostream>が提供する機能とは異なります。
簡潔に言えば、#include <iostream>は標準的なC++の入出力機能をまとめて提供しているもので、全てのファイルやライブラリを含んでいるわけではありません。
という事であっているのでしょうか?後、C言語とC++では、標準入出力が異なるよ。ということでしょうか?
教えて頂けると幸いです。

質問者からの補足コメント

  • うーん・・・

    もしかして、C言語とC++の#include<studio.h>と#include<iostream>の違いは、C++では、C言語の printfなどの関数を使わなくてもいけるし、C++では、C言語の printf関数よりももっと便利な関数があるよ。という事でしょうか?教えて頂けると幸いです。

    No.7の回答に寄せられた補足コメントです。 補足日時:2023/11/23 14:39

A 回答 (8件)

> 所で、int main() { return 0;}というのはどういうプログラムなのでしょうか?教えて頂けると幸いです。



ほとんどすべてのCプログラムに、int main() も return 0; も使われていますが、これが読めないというのは、Cを全く知らないと言うことなのでしょうか??
一応説明すると、「完了コード0で修了するプログラム」です。ヘッダファイルを使わないサンプルとして挙げたので、関数が呼べないので、「最小の正しいプログラム」ですかね。Unix/Linuxだと、/usr/bin/true コマンドの中味がこれです。

これが分からないとすると、逆にC/C++について、何を知っていますか?
    • good
    • 0

> Cからはインクルード不可とはどういう意味でしょうか?



「インクルード不可」とは「インクルードできない」という意味です。
#include <iostream>
と書いてコンパイルするとコンパイルエラーになります。


> 後、C言語で、 printf関数にあたるC++は何なのでしょうか?

printfはそのまま C++ で使えるので、
#include <stdio.h>
と書いて、printfを使えば良いです。
C++ であろうが printf を使うためには stdio.h が必要です。
Cのヘッダ・関数は(もしかすると例外があるかもですが)C++でも使えます。
この回答への補足あり
    • good
    • 0
この回答へのお礼

迅速な回答ありがとうございます。所で、int main() { return 0;}というのはどういうプログラムなのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/23 14:32

「標準入出力」はOSの機能であって、C言語の機能ではありません。



stdioは「C言語設計者が『C言語の標準』と考える方法による入出力」をみんなで共有するための仕組みです。OSの標準入出力とは直接の関係はありません。
なので、stdioを使わずにOSの標準入出力にアクセスすることもできます。
「ボクの考えた方法による入出力」を使うこともできます。

iostream は「C++言語設計者が『C++言語の標準』と考える方法による入出力」です。
C言語のstdioの方法はC++には似わないと考えて作られました。


> 言語の printf関数にあたるC++の関数は何なのでしょうか?

答えは2つあります。

(1) iostreamにはありません。
そもそもの考えが違うので、printfにピッタリ該当するものはiostreamにはありません。
printfで何をどう出力しようとしているかを考え、それを std::cout で記述するにはどうするかを考えます。

(2) C言語との互換のために、cstdioが用意されています。
https://cpprefjp.github.io/reference/cstdio.html
    • good
    • 0

printfに相当するのがcout、scanfに相当するのがcinです


https://qiita.com/tak001/items/cf02f0748e4e4066b …
    • good
    • 0

ヘッダをインクルードするのは、何らかの関数・変数を使うためです。



printf や fopenを使いたければ、CでもC++でも、stdio.h のインクルードが必要です。stdio.hで定義されている物を全く使わないならCでも不要。int main() { return 0; } とか。

C++ で、std::cout 等を使いたければ iostream のインクルードが必要です。iostream で定義されている物を全く使わないなら不要。(Cからはインクルード不可)

sin cos 等の数学関数が使いたければ math.h のインクルードが必要だとか、いろいろ同じ事です。
    • good
    • 0
この回答へのお礼

Cからはインクルード不可とはどういう意味でしょうか?後、C言語で、 printf関数にあたるC++は何なのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/22 08:58

stdio.hとiostream.hの違いはヘッダファイルを開けばわかります。



違いはこれを参考にしてください
https://docs.oracle.com/cd/E19957-01/805-7889/6j …
https://docs.oracle.com/cd/E19957-01/805-7889/z4 …
http://nalab.mind.meiji.ac.jp/~mk/labo/text/welc …
    • good
    • 0
この回答へのお礼

例えば、C言語の printf関数にあたるC++言語は何なのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/22 08:55

勘違いをしているようですが、C++はC言語をベースにしてますが、上位互換があるわけではありません。



C++の標準入出力ライブラリであるiostream.hもstdio.hを包含しているわけではありません。

ただ、stdio.hで実装されている関数を使うよりも高速に処理できる関数を実装しているので、代わりにそれを使えば済むように出来ています。

違いについては別途勉強してください。
    • good
    • 0
この回答へのお礼

例えば、C言語の printf関数にあたるC++の関数は何なのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/22 08:54

includeするのは、そのヘッダファイルに命令が書かれています。


なので代表的な
printfを使いたい場合はiostream.hでは使えません。

標準入出力が異なります
    • good
    • 0
この回答へのお礼

C言語の#include<stdio.h>とC ++の#include<iostream>の違いは何なのでしょうか?C言語の場合では、iostream.hが使えるという事でしょうか?もし、printfが使えないとすれば、iostream.hは何に使えるのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/20 16:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A