「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 を表示できます。
 
 
== オブジェクト指向 ==