入出力マニピュレータについて – プログラミング – Home

入出力マニピュレータについて
 
通知
すべてクリア

[解決済] 入出力マニピュレータについて


涙くん
 涙くん
(@涙くん)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

こんにちは
C++を学習中の初心者です。

入出力マニピュレータについて教えていただきたいのですが、
iomanip.cppをインクルードしなくてもendlが利用できるのは
どうしてなのでしょうか?
iostream.cppをみましたが直接iomanio.cppをインクルードして
はいませんでした。
ご存知の方よろしくお願いします。


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

一般に xxx.cpp を include することは無いです。
よって iomanip.cpp は <iomanip> の誤りだと解釈して話を続けます。

>iomanip.cppをインクルードしなくてもendlが利用できるのは
std::endl は <ostream> で宣言されることになっています。
なので <iomanip> とは直接には無関係です。

>どうしてなのでしょうか?
なぜ?を納得するには template の宣言と定義とインスタンス化に
ついて理解する必要があります。
とりあえず endl は template な関数で、必要な時にインスタンス化
されるのですが...


返信引用
涙くん
 涙くん
(@涙くん)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

tetrapod さんご返答ありがとうございます。
なるほど分りました。
iosクラスの派生クラスなのでiostreamのインクルードでOKなのですね。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 入出力マニピュレータについて教えていただきたいのですが、
> iomanip.cppをインクルードしなくてもendlが利用できるのは
> どうしてなのでしょうか?
> iostream.cppをみましたが直接iomanio.cppをインクルードして
> はいませんでした。
> ご存知の方よろしくお願いします。

まず、インクルードしているのはヘッダファイルだと思うけど、
書き間違いだよね?

endlの宣言は<ostream.h>にあります。c++では<stdio.h>の代わりに
<iostream.h>を使うことも多いですが、<iostream.h>の中で<ostream.h>
をインクルードしています。

書式設定(setw()等)を使いたい場合には、<iomanip.h>をインクルードしますが、
この中で<iostream.h>をインクルードしています。

いくつか勘違いしていませんか?

# 以上はVC6.0で確認。
# ついでに#include <iostream>(拡張子なし)とかとは、別の話なので
# 混同しないように注意してください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> なるほど分りました。

…多分わかってない。

> iosクラスの派生クラスなのでiostreamのインクルードでOKなのですね。

std::endl は <iostream> あるいは <ostream> で宣言されているから。
# iosの派生だなんて誰も一言も言ってない


返信引用
涙くん
 涙くん
(@涙くん)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

たいちうさん、επιστημηさんご返答ありがとうございます。
入出力マニュピュレータについてもっと深く学習します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました