PR

【C++】標準出力・入力ストリーム【名前空間・スコープ解決演算子】

アイキャッチ C++
この記事は約8分で読めます。

標準出力ストリーム・標準入力ストリームに関する記事です。
スコープ解決演算子や名前空間についても解説しています。

のんびり丸

WEBアプリの開発等をしています。
日々の学習の備忘録として運営していこうと思います。

のんびり丸をフォローする

標準出力ストリーム

【std::cout】は標準出力ストリームと呼ばれ、変数や文字列を標準出力へ出力する際に使用されます。
標準出力は、デフォルトではコンソール画面に表示されます。

ちなみに、【cout】は【シーアウト】と読みます。

使い方

標準出力ストリームを使用する際は、<iostream>の組み込みが必要です。
複数の変数や文字列を出力したい場合は、【<<】を複数回使用します。

また、【endl】を記述することで、改行を行うことが出来ます。

include <iostream>
std::cout << ○○○ << std::endl
std::cout << ○○○ << ○○○ << std::endl

コーディング例①

#include <iostream>

int main() {
	std::cout << 123 << std::endl;
	std::cout << 123 << 456 << std::endl;
	std::cout << "のんびり丸です。" << std::endl;

	return 0;
}
出力
123
123456
のんびり丸です。

〇文字で表示

空白を含めて○文字で表示したい場合は、【width】を使用します。
【width】は、出力するたびに記述する必要があります。

std::cout.witdh(文字数);

コーディング例①

#include <iostream>

int main() {
	std::cout.width(5);
	std::cout << 123 << std::endl;

	return 0;
}
出力
  123

空白を〇で埋める

空白を○で埋めたい場合は、【fill】を使用します。
【fill】は、出力するたびに記述する必要があります。

std::cout.fill();

コーディング例①

#include <iostream>

int main() {
	std::cout.width(5);
	std::cout.fill('0');
	std::cout << 123 << std::endl;

	return 0;
}
出力
00123

小数点の桁数

小数点の桁数を指定したい場合は、【precision】を使用します。
表示されない桁は、四捨五入されます。

また、【precision】は、出力するたびに記述する必要があります。

std::cout.precision();

コーディング例①

#include <iostream>

int main() {
	std::cout.precision(4);
	std::cout << 123.45 << std::endl;

	return 0;
}
出力
123.5

標準入力ストリーム

【std::cin】は標準入力ストリームと呼ばれ、入力データを受け取る際に使用されます。
標準入力は、デフォルトではキーボードです。

ちなみに、【cin】は【シーイン】と読みます。

使い方

標準入力ストリームを使用する際は、<iostream>の組み込みが必要です。
【>>】の右に記述した変数に、キーボードで入力した値が格納されます。

include <iostream>
std::cin >> 変数;

コーディング例①

#include <iostream>

int main() {
	int A;
	std::cout << "キーボードで数値を入力してください。" << std::endl;
	std::cin >> A;
	std::cout << A << std::endl;

	return 0;
}
出力
キーボードで数値を入力してください。
5
5

上記の例では、『5』をキーボードで入力しています。

コーディング例②

#include <iostream>

int main() {
	char A[50];
	std::cout << "キーボードで文字列を入力してください。" << std::endl;
	std::cin >> A;
	std::cout << A << std::endl;

	return 0;
}
出力
キーボードで文字列を入力してください。
のんびり丸です。
のんびり丸です。

上記の例では、『のんびり丸です。』をキーボードで入力しています。

getline

通常の【std::cin】の場合、文字列の中に半角スペースがあると、半角スペース以降は変数に格納されません。
半角スペースを含んだ値を変数に格納したい場合は、【getline】を使用します。

コーディング例①

#include <iostream>

int main() {
	char A[50];
	std::cout << "キーボードで文字列を入力してください。" << std::endl;
	std::cin >> A;
	std::cout << A << std::endl;

	return 0;
}
出力
キーボードで文字列を入力してください。
あいうえお かきくけこ
あいうえお

上記の例では、『あいうえお かきくけこ』をキーボードで入力しています。

コーディング例②

#include <iostream>

int main() {
	char A[50];
	std::cout << "キーボードで文字列を入力してください。" << std::endl;
	std::cin.getline(A, sizeof(A));
	std::cout << A << std::endl;

	return 0;
}
出力
キーボードで文字列を入力してください。
あいうえお かきくけこ
あいうえお かきくけこ

上記の例では、『あいうえお かきくけこ』をキーボードで入力しています。

スコープ解決演算子

スコープ解決演算子【::】は、特定のスコープ内の変数・関数・クラス等にアクセスする際に使用されます。

例えば、ローカル変数とグローバル変数の名称が同じ場合は、ローカル変数が優先されて呼び出されます。
グローバル変数を優先して呼び出したい場合には、スコープ解決演算子【::】を使用します。

::変数

また、スコープ解決演算子の前にクラス名や名前空間を付けると、そのメンバを優先して呼び出すことが出来ます。

クラス名::メンバ
名前空間::メンバ

コーディング例①

#include <iostream>

// グローバル変数
int value = 10;

// クラスの定義
class MyClass {
public:
    MyClass();
    int value;
};

MyClass::MyClass() {
    int value = 100; // ローカル変数
    MyClass::value = 50; // メンバ変数
    std::cout << value << std::endl;
    std::cout << MyClass::value << std::endl;
    std::cout << ::value << std::endl;
}

int main() {
    MyClass ClassA;

    return 0;
}
出力
100
50
10

名前空間

同じ名称の変数・関数・クラス等を設定すると、リンクエラーが発生します。
同じ名称を用いたい場合には、名前空間を使用します。

namespace 名前空間名{
// 変数や関数
}

名前空間を設定した変数・関数・クラス等を呼び出す際には、スコープ演算子を使用します。

コーディング例①

#include <iostream>

// 名前空間の設定
namespace A {
    int value = 100;
}
namespace B {
    int value = 200;
}

int main() {
    std::cout << A::value << std::endl;
    std::cout << B::value << std::endl;

    return 0;
}
出力
100
200

using namespace

名前空間を使用する際に、その都度スコープ演算子を記述するのが面倒な場合には、【using namespace】を設定します。
頻繁に使用する名前空間に利用すると効果的ですね。

標準入力ストリーム・標準出力ストリームに関しても、【using namespace】を利用することが出来ます。

using namespace 名前空間名;

コーディング例①

#include <iostream>

// 名前空間の設定
namespace A {
    int value = 100;
}
namespace B {
    int value = 200;
}

// using namespace
using namespace std;
using namespace A;

int main() {
    cout << value << endl;
    cout << B::value << endl;

    return 0;
}
出力
100
200
タイトルとURLをコピーしました