「C++/stdio.h」の編集履歴(バックアップ)一覧に戻る

C++/stdio.h - (2008/01/30 (水) 21:21:17) の編集履歴(バックアップ)


書式

%[フラグ][最小フィールド幅][.精度][長さ修飾子]変換指定子

フラグ

  • - (左寄せ)

    setw と left、setf(ios::left)、setiosflags(ios::left) を組み合わせる。

    • C
      #include <stdio.h>
       
      int main() {
          int a = 10;
          int b = -1;
       
          /* - なしで幅指定 */
          printf("a: %5d b: %5d (default)\n", a, b);
       
          /* - ありで幅指定 */
          printf("a: %-5d b: %-5d (with -)\n", a, b);
       
          /*
            出力結果
            a:    10 b:    -1 (without -)
            a: 10    b: -1    (with -)
          */
       
          return 0;
      }
    • C++
      #include <iostream>
       
      // setw、setiosflags を使用する場合
      #include <iomanip>
       
      int main() {
       
          int a = 10;
          int b = -1;
       
          // 幅のみ指定
          std::cout << "a: " << std::setw(5) << a << " b: " << std::setw(5) << b << " (only setw)" << std::endl;
       
          // left で左寄せ
          std::cout << "a: " << std::left << std::setw(5) << a << " b: " << std::setw(5) << b << " (left)" << std::endl;
       
          // setf で左寄せ
          std::cout.setf(std::ios::left);
          std::cout << "a: " << std::setw(5) << a << " b: " << std::setw(5) << b << " (setf)" << std::endl;
       
          // setiosflags で左寄せ
          std::cout << "a: " << std::setiosflags(std::ios::left) <<  std::setw(5) << a << " b: " << std::setw(5) << b << " (setiosflags)" << std::endl;
       
          /*
            出力結果
            a:    10 b:    -1 (only setw)
            a: 10    b: -1    (left)
            a: 10    b: -1    (setf)
            a: 10    b: -1    (setiosflags)
          */
       
          return 0;
      }
  • + (常に符号を出力)
    • C
      #include <stdio.h>
       
      int main() {
          int a = 10;
          int b = -1;
       
          /* + なし */
          printf("a: %d b: %d (default)\n", a, b);
       
          /* + あり */
          printf("a: %+d b: %+d (with +)\n", a, b);
       
          /*
            出力結果
            a: 10 b: -1 (without +)
            a: +10 b: -1 (with +)
          */
       
          return 0;
      }
    • C++

      setf(ios::showpos) または setiosflags(ios::showpos) を使用する。

      #include <iostream>
       
      // setiosflags を使用する場合
      #include <iomanip>
       
      int main() {
       
          int a = 10;
          int b = -1;
       
          // 指定なし
          std::cout << "a: " << a << " b: " << b << " (default)" << std::endl;
       
          // setf で指定
          std::cout.setf(std::ios::showpos);
          std::cout << "a: " << a << " b: " << b << " (setf)" << std::endl;
       
          // setiosflags で指定
          std::cout << std::setiosflags(std::ios::showpos) << "a: " << a << " b: " << b << " (setiosflags)" << std::endl;
       
          /*
            出力結果
            a: 10 b: -1 (default)
            a: +10 b: -1 (setf)
            a: +10 b: -1 (setiosflags)
          */
       
          return 0;
      }
  • 空白 (0以上の場合、符号の代わりに空白を出力)
    • C
      #include <stdio.h>
       
      int main() {
          int a = 10;
          int b = -1;
       
          /* 指定なし */
          printf("a: %d b: %d (default)\n", a, b);
       
          /* 空白あり */
          printf("a: % d b: % d (with space)\n", a, b);
       
          /*
            出力結果
            a: 10 b: -1 (default)
            a:  10 b: -1 (with space)
          */
       
          return 0;
      }
    • C++

      ?

  • 0 (指定されたフィールド幅になるように0で埋める)
    • C
      #include <stdio.h>
       
      int main() {
          int a = 10;
          int b = -1;
       
          /* 指定なし */
          printf("a: %d b: %d (default)\n", a, b);
       
          /* 0 あり */
           printf("a: %05d b: %05d (with 0)\n", a, b);
       
          /*
            出力結果
            a: 10 b: -1 (default)
            a: 00010 b: -0001 (with 0)
          */
       
          return 0;
      }
    • C++

      internal、setf(ios::internal)、setiosflags(ios::internal) と setfill('0') を組み合わせる。

      #include <iostream>
      #include <iomanip>
       
      int main() {
       
          int a = 10;
          int b = -1;
       
          // 指定なし
          std::cout << "a: " << a << " b: " << b << " (default)" << std::endl;
       
          // internal と setfill で指定
          std::cout << std::internal << std::setfill('0') << "a: " << std::setw(5) << a << " b: " << std::setw(5) << b << " (internal)" << std::endl;
       
          // setf と setfill で指定
          std::cout.setf(std::ios::internal);
          std::cout << std::setfill('0') << "a: " << std::setw(5) << a << " b: " << std::setw(5) << b << " (setf)" << std::endl;
       
          // setiosflags  と setfill で指定
         std::cout << "a: " << std::setiosflags(std::ios::internal) <<  std::setw(5) << a
                     << " b: " << std::setw(5) << b << " (setiosflags)" << std::endl;
          /*
            出力結果
            a: 10 b: -1 (default)
            a: +10 b: -1 (setf)
            a: +10 b: -1 (setiosflags)
          */
       
          return 0;
      }
  • # (数値データを特殊な形式で出力)

printf

  • C
    #include <stdio.h>
     
    int main() {
        char *p = "Hello World";
     
        printf("%s\n", p);
     
        return 0;
    }
  • C++
    #include <iostream>
     
    int main() {
        char *p = "Hello World";
     
        std::cout << p << std::endl;
     
        return 0;
    }
目安箱バナー