C++ ゼロベース チュートリアル (C++ での印刷)


序文

この記事では、C++ でデータを出力する方法を学びます。C 言語では、hello world を使用してデータを出力します。では、C++ でデータを出力するにはどうすればよいでしょうか?

1. コードの実験

C++ では、データの印刷は通常、標準出力ストリーム (std::cout) を使用して実行されます。std::cout は、C++ 標準ライブラリの出力ストリーム オブジェクトであり、コンソールまたは他のデバイスにデータを出力できます。データを印刷する一般的な方法は次のとおりです。

1. 基本データ型を出力する:
C++ では、挿入演算子 (<<) を使用して基本データ型を std::cout に出力できます。例えば:

int number = 10;
std::cout << "Number: " << number << std::endl;

2. 文字列を出力する:
同じ挿入演算子 (<<) を使用して、文字列を std::cout に出力できます。例えば:

std::string message = "Hello, World!";
std::cout << "Message: " << message << std::endl;

3. 変数のアドレスを出力します。
変数のアドレスを出力するには、アドレス演算子 (&) を使用して std::cout に出力します。例えば:

int number = 10;
std::cout << "Address of number: " << &number << std::endl;

4. フォーマットされた印刷:
フォーマットされた印刷は、C++ のフロー制御文字を使用して実現できます。たとえば、 std::setw() を使用してフィールド幅を設定したり、 std::setprecision() を使用して浮動小数点数の小数点以下の桁数を設定したりできます。例えば:

double pi = 3.14159265359;
std::cout << "Value of pi: " << std::setprecision(5) << pi << std::endl;

5. 配列を出力する:
配列を出力するには、ループを使用して配列の各要素をループし、それを std::cout に 1 つずつ出力します。例えば:

int numbers[] = {
    
    1, 2, 3, 4, 5};
std::cout << "Numbers: ";
for (int i = 0; i < 5; ++i) {
    
    
    std::cout << numbers[i] << " ";
}
std::cout << std::endl;

完全なコード:

#include <iostream>
#include <iomanip> // 用于格式化输出

int main() {
    
    
    int number = 10;
    std::string message = "Hello, World!";
    double pi = 3.14159265359;

    // 打印基本数据类型
    std::cout << "Number: " << number << std::endl;

    // 打印字符串
    std::cout << "Message: " << message << std::endl;

    // 打印变量的地址
    std::cout << "Address of number: " << &number << std::endl;

    // 格式化打印
    std::cout << "Value of pi: " << std::setprecision(5) << pi << std::endl;

    // 打印数组
    int numbers[] = {
    
    1, 2, 3, 4, 5};
    std::cout << "Numbers: ";
    for (int i = 0; i < 5; ++i) {
    
    
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

2. C++ 名前空間

C++ では、ネームスペースは、名前の競合を解決し、コードを編成するために使用されるメカニズムです。関数、クラス、変数などのシンボルを特定の名前空間にカプセル化して、コードの異なる部分間の競合を防ぐことができます。

名前空間の構文は次のとおりです。

namespace namespace_name {
    
    
    // 声明和定义代码
}

C++ 名前空間の説明と使用例を次に示します。

名前の競合を避ける: 異なるコード部分が同じ名前を使用すると、名前の競合が発生します。この競合を避けるために、これらのコードを異なる名前空間に配置できます。例えば:

namespace A {
    
    
    int value = 5;
}

namespace B {
    
    
    int value = 10;
}

int main() {
    
    
    std::cout &lt;&lt; A::value &lt;&lt; std::endl;  // 输出 5
    std::cout &lt;&lt; B::value &lt;&lt; std::endl;  // 输出 10
    return 0;
}

上の例では、A と B は 2 つの異なる名前空間であり、両方とも value という名前の変数を持っています。名前空間が存在するため、対応する変数は名前空間指定子:: を介して参照でき、名前の競合が回避されます。

ネストされた名前空間: 名前空間をネストして、より複雑な階層を形成することもできます。例えば:

namespace A {
    
    
    namespace B {
    
    
        int value = 15;
    }
}

int main() {
    
    
    std::cout &lt;&lt; A::B::value &lt;&lt; std::endl;  // 输出 15
    return 0;
}

上記の例では、名前空間 B が名前空間 A 内にネストされており、B の変数はネストを通じて main 関数内でアクセスされます。

ネームスペース エイリアスの使用: ネームスペースの使用を簡素化するために、C++ はネームスペース エイリアス メカニズムを提供します。ネームスペースのエイリアスを作成するには、キーワード namespace の後に新しい名前を指定します。例えば:

namespace very_long_and_verbose_namespace {
    
    
    int value = 20;
}

// 创建别名
namespace vln = very_long_and_verbose_namespace;

int main() {
    
    
    std::cout &lt;&lt; vln::value &lt;&lt; std::endl;  // 输出 20
    return 0;
}

上記の例では、エイリアス vln が名前空間 vln = Very_long_and_verbose_namespace; を通じて作成されるため、非常に長く冗長な名前空間名の代わりに vln を使用できます。
要約すると、C++ 名前空間は、名前の競合を回避し、関連するコードをまとめて編成するための効果的なメカニズムを提供します。名前空間を使用すると、コードをより適切に整理および管理できるため、コードの可読性と保守性が向上します。

3. C++での印刷とC言語での印刷の比較

C++では、C言語のcoutとprintfはどちらも情報を出力する関数ですが、使い方や特徴にいくつかの違いがあります。cout と printf の比較を次に示します。
フォーマットされた出力:

cout は出力に挿入演算子 << を使用します。整数、浮動小数点数、文字列などのさまざまなデータ型を直接出力でき、データ型に応じて自動型変換と書式設定を実行します。
printf はフォーマット文字列をパラメータとして使用し、フォーマット変換指定子 (%d、%f、%s など) を通じて出力データ型とフォーマットを指定します。

类型安全:

cout はタイプセーフな出力メソッドであり、コンパイラーはターゲットのデータ型に応じて適切な出力メソッドを自動的に選択し、一部の型エラーや潜在的なセキュリティ問題を回避します。
printf を使用する際には、正しい形式変換指定子とそれに対応するパラメータの型を手動で指定する必要があり、型が一致しない場合、出力エラーや未定義の動作が発生する可能性があります。

可读性和易用性:

cout の出力構文は比較的直感的で読みやすく、挿入演算子 << を使用することで手動で形式を設定することなく連続書き込みで出力できます。
printf のフォーマット文字列はある程度複雑になるため、フォーマットとパラメータの間の対応関係を手動で制御する必要がありますが、複雑な出力フォーマットの場合はさらに面倒になる可能性があります。

功能扩展:

cout は C++ 標準ライブラリの一部であり、std::string、ファイル ストリームなどの他の標準ライブラリ コンポーネントと一緒に簡単に使用できます。
printf は C 標準ライブラリの関数です。関数が比較的少なく、一部の高度な機能 (出力のフォーマット時の幅や精度の制御など) に対しては柔軟性が不十分な場合があります。

要約すると、cout と printf はどちらも一般的な出力関数であり、どちらの方法を選択するかは、特定のニーズと状況によって異なります。C++ では、cout の方がタイプセーフで使いやすく、他の C++ 機能やライブラリとよりよく統合できるため、推奨されます。ただし、特定のシナリオでは、printf の書式設定された出力関数には依然として利点と用途がある可能性があります。

要約する

この記事で解説していきますので、よく理解して試していただければ幸いです。

おすすめ

転載: blog.csdn.net/m0_49476241/article/details/131418000