「C++/C++特有の概念」の版間の差分
削除された内容 追加された内容
編集の要約なし |
編集の要約なし |
||
165 行
上の説明ではこのことを前提としています。
== オブジェクト指向 ==
311 ⟶ 242行目:
== コンソール入出力 ==
=== 基本 ===
標準Cでコンソール入出力する場合、printf関数やscanf関数を使った。(文字表示ならコンソール出力なのでprintf。キーボード入力ならコンソール入力なのでscanf。)
C++では、下記のような体系的な新しい方法でコンソール入出力を行うことができる。
369 ⟶ 301行目:
}
</syntaxhighlight>
=== cout と printf の相違点 ===
C++におけるcoutには、出力の書式を指定しなくていいという利点があります。
printfには、出力書式の指定が必要です。
;コード例
<syntaxhighlight lang="cpp">
#include <iostream>
#include <string> // 文字列を扱うコードなので
using namespace std;
int main() {
int e=3;
cout << e << endl;
string moji="aaaa";
cout << moji << endl;
}
</syntaxhighlight>
;表示結果
3
aaaa
いっぽう、printfを使うと、下記のように出力書式の設定が必要です。
;コード例
<syntaxhighlight lang="cpp">
#include <iostream>
#include <string>
using namespace std;
int main() {
int e=3;
printf("%d\n",e);
string moji="aaaa";
printf("%s\n", moji.c_str() );
cout << moji << endl; // 比較用
}
</syntaxhighlight>
;出力結果
<pre>
3
aaaa
aaaa
</pre>
C++ にはstring型というのがあります。いっぽう、標準Cにはstring型が無いです。
printfが標準Cに由来するため、C++のprintfも標準Cの仕様に合わせてあるため、そのままではprintfではstring型を表示できないので、<code> .c_str()</code> というメソッド(命令のようなもの)を使ってprintfでも表示できるようにデータを取り出して命令する必要があります。
<code> .c_str()</code> メソッドを使っても、もとのオブジェクト(上記コードでいうmojiの部分)はそのままなので、ひきつづき cout で、もとのオブジェクト moji を表示できます。
== 脚注 ==
|