C++ で文字列を印刷する方法

  1. 文字列を印刷するには std::cout<< 演算子を使う
  2. 文字列を出力するために std::copy アルゴリズムを使う
  3. 文字列を印刷するには printf() 関数を用いる

この記事では、C++ で文字列を印刷する方法について、複数のメソッドのデモを行います。

文字列を印刷するには std::cout<< 演算子を使う

std::cout はストリームバッファへの出力を制御するためのグローバルオブジェクトである。文字列変数 s1 をバッファに出力するには、ストリーム挿入演算子と呼ばれる演算子 - << を使う必要があります。次の例は、単一の文字列を出力する操作を示しています。

#include <iostream>
#include <string>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;

int main(){
    string s1 = "This string will be printed";
    cout << s1;
    cout << endl;

    return EXIT_SUCCESS;
}

出力:

This string will be printed

文字列を出力するために std::copy アルゴリズムを使う

copy メソッドは <algorithm> STL ライブラリの copy メソッドであり、範囲要素を複数の方法で操作することができます。文字列コンテナ自体を範囲として扱うことができるので、copy アルゴリズムに std::ostream_iterator<char> 引数を追加することで、各要素を出力することができます。

このメソッドは文字列の各文字間に特定の区切り文字を渡すこともできます。以下のコードでは、文字列を元の形式で印刷するためにデリミタ("")を指定していません。

#include <iostream>
#include <string>
#include <vector>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::copy;

int main(){
    string s1 = "This string will be printed";

    copy(s1.begin(), s1.end(),
         std::ostream_iterator<char>(cout, ""));
    cout << endl;

    return EXIT_SUCCESS;
}

文字列を印刷するには printf() 関数を用いる

printf はフォーマットされた出力を行うための強力なツールである。C 標準入出力ライブラリの一部である。C++ コードから直接呼び出すことができる。printf は可変の数のパラメータを持ち、文字列変数を char * 型としているので、引数として渡すには s1 変数から c_str メソッドを呼び出す必要があります。各型はそれぞれ独自の書式指定子(例えば string - %s)を持っていることに注意してください。

指定子 説明
% リテラル % 文字を出力します(この型はフラグ、幅、精度、長さのフィールドを受け付けません)。
d, i int を符号付き整数として使用します。%d%i は出力では同義ですが、入力で scanf と一緒に使用する場合は異なります (%i を使用すると、0x が先行する場合は 16 進数、0 が先行する場合は 8 進数として解釈されます)。
u 10 進数の符号なし整数を表示します。
f, F fFの違いは、無限数や NaN の文字列の印刷方法だけです (f は inf, infinity と nan、F は INF, INFINITY と NAN)。
e, E 標準形の二重値 (d.dde±dd)。E の変換では,指数を導入するために(e ではなく)E という文字を使用します。
g, G 倍は通常または指数表記のいずれか、その大きさに応じて適切な方を使用します。
x, X 符号なし整数を 16 進数で表します。
o 符号なし整数(8 進数)です。
s ヌル文字で終端する文字列。
c char (文字)。
p void* (void へのポインタ)を実装定義された形式で指定します。
a, A a は小文字を使用し、A は大文字を使用します。
n 何も表示されませんが、これまでに正常に書き込まれた文字数を整数のポインタパラメータに書き込みます。
#include <iostream>
#include <string>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;

int main(){
    string s1 = "This string will be printed";
    cout << s1;
    cout << endl;

    printf("%s", s1.c_str());
    cout << endl;

    return EXIT_SUCCESS;
}

関連記事 - C++ String

  • C++で文字列を整数 Int に変換する方法
  • C++で文字列を小文字に変換する方法
  • comments powered by Disqus