- ベストアンサー
C++の改行を表すコマンド
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「\n」は改行のみ 「endl」は改行+バッファのフラッシュ という動作をします C言語を知っている上でC++をおぼえようとしているのであれば 説明しやすいのですが簡単に説明すると #include <iostream.h> int main() { cout << "Hello world!!" << endl; cout << "Hello world!!" << endl; return 0; } というコードがあるとしたら endlのたびに「Hello world!!」が出力されるという動作になります 何も考えなければこちらのほうが高速に結果を得られます #include <iostream.h> int main() { cout << "Hello world!!\n"; cout << "Hello world!!\n"; return 0; } のほうではcout行2つを解釈した上での出力となります 複雑なプログラムになれば 頻繁にフラッシュを行うと速度が遅くなるという現象もでたりしますが そのうちC++でのプログラミングになれてくれば これらの使い分けもできるようになると思います C++のほうは基本的に結果を得るのに高速な「endl」でOKです
その他の回答 (2)
- oldman50
- ベストアンサー率29% (8/27)
'\n'は「改行文字」を表します。 一方、endlは、マニピュレータと呼ばれるストリーム状態操作関数のうちの一つで、ストリームに改行を出力した後、更にflushという別のマニピュレータを実行して、バッファの内容をフラッシュするものです。 cout << "ABC" << '\n'; ・・・(1)文字列ABCの後に改行を出力する cout << "ABC" << endl; ・・・(2)文字列ABCの後に改行を出力してフラッシュする 標準出力に出力する場合は、'\n'を出力すると自動的にフラッシュされるので、この二つの効果は同じです。 '\n'は関数ではなくて単なる文字ですから、(1)と同じことを cout << "ABC\n"; のように書くことも出来ます。しかし、 cout << "ABCendl"; とは書けません。endlは文字ではなく、「ストリーム状態」を操作する関数だからです。
お礼
ありがとうございました。
- jacta
- ベストアンサー率26% (845/3158)
std::endlは、std::basic_ostreamに対してしか使えません。 他の状況で改行文字を扱いたい場合は、'\n'を使うしかありません。 例えば、std::stringに改行文字を追記したい場合... std::string str("abc"); str.push_back('\n'); のように、'\n'を使うしかなく、この文脈ではstd::endlは使えません。
お礼
ありがとうございました
関連するQ&A
- c++の改行ができません。
cの勉強はせず、c++の勉強を始めたばかりです。 以下のソースコードでコンパイルは通るのですが、実行すると¥nによる改行が起こりません。 #include <iostream> using namespace std; int main() { cout << "Hello¥n"; cout << "abc"; return 0; } 次のように出力されます。 Hello¥nabc(コンピュータ名):(ディレクトリ名) (ユーザ名)$ ちなみに OS:OS10.8 コンパイラ:gcc4.7.2 エディタ:emacs24.2 実行ソフト:terminal です。 また、gccとemacsはmacportsにより導入しました。 分かる方回答よろしくお願いします。
- ベストアンサー
- その他(インターネット・Webサービス)
- 【C#】文字列の最後に改行を入れていく処理
【C#】文字列の最後に改行を入れていく処理 C#初心者です。 ファイルを一行読み込むごとに、行の最後に改行\nを入れ、最後にその文字列を繋げ、出力したいのですが、やり方がわかりません。 結果は abcdefg hijklmn opqrstu のようになってほしいです。 分かる方いらっしゃいましたら教えていただけると幸いです。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- 改行コードについて
改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします
- 締切済み
- その他([技術者向] コンピューター)
- lsコマンドについて。
lsコマンドについて。 $lsを実行したときに、結果は各ファイル名が改行で区切られて出力されると思うのですが、コンソールにはスペースかタブで区切られているように表示されます。 これはシェルがlsコマンドの結果に含まれる改行をスペースなどに変えてコンソールに出力しているからなのでしょうか。 よろしくお願いします
- 締切済み
- Linux系OS
- dig/host/nslookup コマンドの違い
Linuxを勉強中です。いつもお世話になります。 dig/host/nslookup コマンドの違いについて、使い分けの理解ができません。 どういう使い分けをするのでしょうか。 どうぞ宜しくお願い致します。
- ベストアンサー
- Linux系OS
- Javaでの改行コード
Javaでファイル出力をしたいのですが、 改行コードを「\n」にしたところ「・」が入ってしまいました。 「・」が入らないような改行コード、あるいは なにか良い対策案を教えて下さい。
- ベストアンサー
- Java
- xcodeで改行が。。
xcodeを使ってCプログラミングをしているのですが、改行の時に?nと打つとそのまま?nと表示されてしまいます。バックスラッシュを他のページからコピペしてくると改行できるのですが、はじめから?nで改行できるようにするか,バックスラッシュを打てるようにするにはどうしたら良いのでしょうか?? OSは10.3を使っています。 ↑文中のはてなマークは円マークです。
- ベストアンサー
- Mac
- [C++]ファイル出力について
教えてください。 コマンドプロンプトから何行か書いた文章をファイルにしたいのですが、 うまくいきません。 作ったものの結果は1行1文字で出力されて、eofでうまく 終わってくれません。 コマンドプロンプトで入力(改行)された通りにファイルに出力 できるようにしたいので、どこがおかしいのか指摘お願いします。 #include <iostream> #include <fstream> #include <stdlib.h> #include <string.h> #include <string> using namespace std; int main(int argc, char *argv[]) { char str[100]; int i; i = 0; if (argc <= 1) { cerr << "Need filename" << endl; exit (1); } ifstream ifs(argv[1], ios::in); if (ifs) { cerr << "Caution" << argv[1] << " already exists " << endl; cerr << " Specify a different filename " << endl; exit (2); } ofstream ofs(argv[1], ios::out); if (!ofs) { cerr << " Unable to write to " << argv[1] << endl; exit (3); } while(str[i] !=EOF) { cin >> str[i]; ofs << str[i] << endl; i++; } return 0; }
- 締切済み
- C・C++・C#
お礼
ありがとうございました