C++ チュートリアル - C++ の使い方シリーズ コラム パート 2

コラムについて

このコラムは高品質の C++ チュートリアル コラムです。最初のコラムをまだ読んでいない場合は、ここをクリックして最初のコラムに進んでください。

このコラムでは一貫してオペレーティング システム: macOS Ventura、コード エディタ: CLion、および C++ コンパイラ: Clang を使用します。

協力的な友人のおかげで、最後の記事は C/C++ の分野で最初の記事になりました。総合ホットリストの64位!(まだ改善中です)、Geek Daily の 8 月 6 日の今日の注目の記事にも掲載されました。筆者も北京勢で61位になりました(まだまだ成長中)^_^

ブロガーからのフィードバックは非常にタイムリーで、読んでいるときに問題が発生した場合は、コメント欄で直接質問することができ、ブロガーはそれを見てから 24 時間以内にフィードバックを返します。

C++ チュートリアル - C++ の使い方シリーズ コラム パート 2


目次

コラムについて

記録を更新

2023 年 8 月 6 日

序文

C++ プリプロセッサとヘッダー ファイル

プリプロセッサ

ヘッドファイル

名前空間 

コート

コート

終わり

C++ ソースコード形式

エピローグ

素早いページめくり

この記事は記事や書籍を参照しています


記録を更新

2023 年 8 月 6 日

最初の記事を公開する


序文

プリプロセッサとは何ですか? ヘッダーファイルとは何ですか? 食べてもいいですか?名前空間とは何ですか? どこで名付けられているのでしょうか?ソースコード形式? 笑って死んで、コードを書いてフォーマットしますか?


C++ プリプロセッサとヘッダー ファイル

プリプロセッサ

プログラムで C++ 入力ツールまたは出力ツールを使用する場合は、次の 2 行のコードを提供してください。

#include <iostream>
using namespace std;

2 行目は他のコードに置き換えることができます。ここではプログラムを簡素化するために使用されています。プログラムが動作するために必要な知識はこれだけです。C++は
、C と同様に、メインのコンパイルの前にソース ファイルを処理するプリプロセッサを使用します。つまり、名前が # で始まるコンパイル ディレクティブを処理し、プリプロセッサを呼び出すために特別なことを行う必要はありません。これはプログラムのコンパイル時に自動的に実行されます。#include コンパイル ディレクティブは
前のコードで使用されました

#include <iostream>

このプラグマは、 iostreamファイルの内容を現在のプログラムに追加します。これは典型的なプリプロセッサ操作ですソースコードがコンパイルされる前に、テキストを置換または追加します。

しかし、なぜiostreamファイルをプログラムに追加する必要があるのでしょうか?

プログラムは外部と通信する必要があるため、iostreamioは入力 ( input ) と出力 ( output )を指します。

C++ 入出力スキームには、最初のプログラムがcoutを使用してメッセージを表示するために必要なiostreamファイル内の多くの定義が含まれます。#inciude コンパイル ディレクティブは、iostreamファイルの内容をソース コード ファイルの内容とともにコンパイラ送信します実際、iostreamファイルの内容は、プログラム内の行#include <iostream>を置き換えます。元のファイルは変更されませんが、ソース コード ファイルとiostreamが結合されて複合ファイルが形成され、コンパイルの次のステップで使用されます。

ヘッドファイル

iostreamのようなファイルは、記事の冒頭に含まれるため、ヘッダー ファイルと呼ばれます。C++ コンパイラには多くのヘッダー ファイルが付属しており、各ヘッダー ファイルには独自のツールがあります。C 言語の伝統は次のとおりです: ヘッダー ファイルは拡張子を使用します。 hは、 math.hファイルなどのファイル タイプを表す便利な方法として、C 用の多くの数学関数を提供します。

ただし、C++ の使用法は変更されました。

古いスタイルの C ヘッダー ファイルはまだ利用可能ですが、かなりの数のヘッダー ファイルがC++ ヘッダー ファイルに変換されています。これらのファイルは名前が変更され、C からのものであることを示すために「c」というプレフィックスが付けられています。例: C++ バージョンmath.hヘッダー ファイルはcmathになります。

iostreamなどの純粋な C++ ヘッダー ファイルの場合、h を削除すると名前が変更されるだけでなく、名前空間も含まれる可能性があります。

ヘッダファイル名
ヘッダーファイルの種類 形状 説明する
C++ の古いスタイル .h で終わる iostream.h C++ プログラムで使用できるのは、
昔ながらの .h で終わる math.h C および C++ ファイルヘッダーが使用可能
C++の新しいスタイル 延長なし iostream

C++ プログラムで使用できるのは、

変換されたC

延長なし

先頭に c を付ける

センチメートル

C++ファイルも使用可能、C以外の機能も使用可能


名前空間 

iostream.hの代わりにiostreamを使用する場合、プログラムでiostreamの定義を使用できるようにするには、次の名前空間プラグマを使用する必要があります。

using namespace std;

これはusing コンパイル ディレクティブです。後で説明します。ここで、名前空間とは何かについて簡単に説明します。

ネームスペースは、大規模なプログラムや、複数のベンダーの既存のコードを組み合わせてプログラムの整理に役立つプログラムの作成を容易にする C++ の機能です。

将来的に対処する可能性のある潜在的な問題:

2 つのパッケージ化された製品を使用することができ、両方の製品にhello() という関数が含まれています。そうすれば、 hello()関数を使用するときに、コンパイラはどのバージョンを参照すればよいのかわかりません。ネームスペースを使用すると、ベンダーは自社の製品をネームスペースと呼ばれる単位にパッケージ化できるため、ネームスペースの名前を使用して、どのベンダーの製品を使用するかを示すことができます。

したがって、ベンダー A は、その hello()関数の完全な名前がA::hello() になるように、その定義を A という名前の名前空間に置くことができます。

同様に、ベンダー B のバージョンの hello() は B::hello() と表現できます。

このようにして、プログラムは名前空間を使用してさまざまなバージョンを区別できます。

A::hello("hello?");
B::hello("hello!");

このように、クラス関数、および変数は C++コンパイラの標準コンポーネントであり、名前空間std に配置されるようになります。これは、ヘッダーファイルに拡張子.hがない場合にのみ当てはまります。これは、出力用にiostreamで定義されたcout変数が実際にはstd::coutであり、endlが実際にはstd::endlであることを意味します。したがって、を使用してコンパイル命令を省略し、次の形式で書くことができます

std::cout << "How to C++" << std::endl;

もちろん、 using namespace std を使用した後に「 std::を使用する必要はありません

もう 1 つの方法は、各機能を個別に使用することです

using std::cout;
using std::endl;

この場合、cout を使用するときに「 std::」を追加する必要はありません。


コート

コート

first.cppの出力コードは次のとおりです。

cout << "This is my first C++ program!" << endl;

 二重引用符で囲まれた部分が出力されるメッセージです。C++ では、二重引用符で囲まれた一連の文字は多くの文字で構成されているため、文字列と呼ばれます。

「<<」記号は、ステートメントがこの文字列を cout に送信することを示し、この記号は情報フローのパスを示します。

クートとは何ですか?

これは、文字列、数値、単一文字などを表示する方法を知っている事前定義されたオブジェクトです。オブジェクト
は数章後まで導入されないため、難しいです。これはオブジェクトの強さを示しています。内部を知らなくてもオブジェクトを使用できるのです。インターフェイスとその使用方法を知る必要があるだけです

coutオブジェクトには単純なインターフェイスがあり、 a が文字列の場合、次のコードはその文字列を表示します。

cout << a;

サブディスプレイ文字列については、これだけは知っておいてください

C++ がこのプロセスを概念的にどのように説明するかを見てみましょう: 概念的には、出力はストリームであり、プログラムから流出する文字の束です。 cout オブジェクトはこのストリームを表し、そのプロパティは iostream ファイルで定義ますcoutのオブジェクト プロパティには、次の例のように、右側の情報をストリームに挿入できる挿入演算子<<が含まれています。

cout << "欢迎订阅专栏";

「購読列へようこそ」という文字列が出力ストリームに挿入されます。したがって、プログラムはメッセージを表示する代わりに、出力ストリームに文字列を挿入します。

終わり

endlの意味は次のとおりです。行を再開し、カーソルを次の行の先頭に移動します。

ハードウェア(モニタなど)から見ると、入出力には非常に時間がかかるため、プログラムは通常coutに書き込まれるものを一時的に保存し、すぐには表示しません。キャッシュされたデータは、一定量が保存された場合、またはendlを受信した場合にのみコンソールに表示されます。

したがって、次のように理解できます: 終了行

C++ には改行メソッド「\n」もあります。

"\n" は 2 文字とは見なされず、実際には 1 つの文字であり全体として存在しますが、 "\n" にはcoutでキャッシュを更新するendlの機能がないため、通常は" を使用する場合はendlを使用します。 \n "次のように二重引用符を追加する必要があります:

cout << "快点赞收藏关注" << "\n";

C++ ソースコード形式

Python などの一部の言語では、行はステートメントと見なされます。ブロガーが C++ に移行するとき、セミコロンに慣れていません。最後にセミコロンが欠けているという問題が常に発生します。C++ のステートメントは、したがって、プログラムは次のように書くこともできます。

#include <iostream>

int
main
        (void)
{
    using
    namespace
            std; cout
            <<
            "一定要点赞收藏关注"
            << endl;
    cout
            << "订阅专栏哦";
    cout
            <<
            endl;
    return
            0;}

これは [doge] と叱られるかもしれませんが、コンパイルすることはできます (ブロガーは自分で試しました。あなたも試すことができます)。ただし、要素の間にスペースや改行を追加してはなりません。次に例を示します。

i nt mai n (void)
---
re
turn 0;
---
cout << "点赞收藏
关注";

次のコード スタイルに従うことをお勧めします。

  1. 各ステートメントは 1 行を占めます
  2. 関数の最初と最後には中括弧が必要であり、中括弧はそれぞれ 1 行を占めます。
  3. 関数内のステートメントは中括弧 (4 つのスペースまたはタブ) に対してインデントする必要があります。
  4. 関数名に関してかっこの周りに空白はありません 

エピローグ

著者は、問題を抱えた友人の問題解決を手助けすることがよくあります。質問がある場合は、コメント欄で直接指摘することができ、著者は質問を見てから 24 時間以内に返信します

この記事について質問がある場合は、コメント欄でご指摘ください。この記事が気に入ったら、いいね、コメント、フォローをお願いします

あなたの周りにあなたと同じようにこの分野について言及した人、または彼と一緒に進歩したい人がいたら、この記事を彼に共有してください

3762 単語、親 10 人、子供 5 人


素早いページめくり

その他の質の高いブロガー記事:

Hexo チュートリアル、これを読んでください - How to シリーズ

Apple WWDC23 開発者カンファレンス - Apple の野心

CSDN で高品質のブログを書く方法 - How to シリーズ


この記事は記事や書籍を参照しています

参考記事

C++ cout を使用するには、この記事を読むだけで十分です - ナレッジ

std::cout << の << の機能は何ですか? - ほぼ知っています

C++_c++ における endl の本質とは endl_xiaofei0859 のブログ - CSDN ブログ

参考書

C++ 入門プラス

おすすめ

転載: blog.csdn.net/cat_bayi/article/details/132132360