「C++/C++特有の概念」の版間の差分
削除された内容 追加された内容
→コンソール入出力: 残念ながら「改善」ではないので。開発当時は改善のつもりだったが、2020現代のプログラマー界隈では否定されている見解 |
編集の要約なし |
||
165 行
上の説明ではこのことを前提としています。
== 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 を表示できます。
== オブジェクト指向 ==
|