A..3 printf() の代わりに

C で計算結果等を画面 (正しくは標準出力) に表示するには、 printf() を使うのが普通であるが、 C++ では、std::cout« 演算子で送る。

Cでは
#include <stdio.h>
...
  printf("こんにちは、世界\n");

C++では
#include <iostream>
...
  std::cout << "こんにちは、世界" << std::endl;

std:: を書くのが面倒ならば、 最初に using namespace std; としておけばよい。

C++では
#include <iostream>
using namespace std;
...
  cout << "こんにちは、世界" << endl;

以下の話は using namespace std; と宣言してあると仮定して説明する。

C で整数型の式は %d, 浮動小数点数の式は %g などの書式を使ったが、C++ では
  int i;
  double x;
...
  printf("i=%d, 2*x=%f\n", i, 2 * x);
  int i;
  double x;

  cout << "i=" << i << ", 2*x=" << 2 * x << endl;

書式の指定をしないで済むのは便利なようだが、 本当に書式を指定する必要が生じた場合は、 少々面倒なことになる。
Cの場合
  int i;
...
  printf("i=%4d\n", i);
C++の場合
  int i;
...
  cout << "i=" << setw(4) << i << endl;

Cの場合
  double pi;
...
  printf("pi=%20.15g\n", pi);
C++の場合
#include <iomanip> // setprecision() に必要

  double i;
...
  cout << "pi=" << setw(20) << setprecision(15) << pi << endl;

(すごく面倒くさいけれど、僕のせいではないので、 石は投げないで下さい。)

/*
 * test1.cpp
 */

#include <iostream>  // #include <stdio.h> に相当
#include <cmath>     // #include <math.h> に相当
#include <iomanip>   // setprecision() に必要
using namespace std; // これはいつもやっておくと便利かも

int main(void)       // C と同じ
{
  double pi;
  pi = 4 * atan(1);
  cout << "123456789012345678901234567890" << endl;
  cout << setw(25) << setprecision(15) << pi << endl;//printf("%25.15g\n", pi);

  cout << setw(25) << setprecision(15) << scientific << pi << endl;//printf("%25.15e\n", pi);

  cout << setw(25) << setprecision(15) << fixed << pi << endl;//printf("%25.15f\n", pi);
  return 0;
}
実行結果
$ c++ test1.cpp ; ./a.out
123456789012345678901234567890
         3.14159265358979
    3.141592653589793e+00
        3.141592653589793
$

大昔に書いたメモ: http://nalab.mind.meiji.ac.jp/~mk/labo/studying-C/Programing-in-C/node227.html



桂田 祐史