C++ で文字列を出力する方法
胡金庫
2023年10月12日
この記事では、C++ で文字列を出力する方法について、複数のメソッドのデモを行います。
文字列を出力するには std::cout
と <<
演算子を使用する
std::cout
はストリームバッファへの出力を制御するためのグローバルオブジェクトです。文字列変数 s1
をバッファに出力するには、ストリーム挿入演算子と呼ばれる演算子 - <<
を使用する必要があります。次の例は、単一の文字列を出力する操作を示しています。
#include <iostream>
#include <iterator>
#include <string>
using std::cin;
using std::cout;
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 <iterator>
#include <string>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;
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 |
f と F の違いは、無限数や 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 <iterator>
#include <string>
using std::cin;
using std::cout;
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;
}
著者: 胡金庫