あなたが言う時:
rs=string(sym, 4);
あなたがしていることは、「std::stringオブジェクトを作成してください。私 (プログラマー) は、この文字配列と数値を与えることで、あなた (プログラム) がそれを行うのを手伝います」と言っているのです。コード ビハインドstd::stringクラスは、文字配列と整数が与えられたインスタンスで、文字配列から示された文字数を取得し、std::stringその内容を使用して を構築する必要があることを認識しています。
あなたが言う時:
string rs2=string(rs, 4);
あなたが今していることは、「オブジェクトを作成してください。この既存のオブジェクトと番号std::stringを提供することで、それを行うのを手伝います」と言っているのです。この場合、クラスはまったく異なることを行います。これら 2 つの引数を受け取ると、代わりに数値を使用して、指定されたから読み取りを開始します。 std::stringstd::stringstd::string
これら 2 つの異なるケースは、クラスの 2 つの異なるコンストラクターです。これらは、利用可能な情報に基づいてオブジェクトを構築する 2 つの異なる方法を提供します。次の形式に変更することで、2 番目の例を最初の例と同じように簡単に動作させることができます。std::stringstd:string
string rs2=string(rs, 0, 4);
これで、「他の から文字を取得して、この新しいstd::string( と呼ばれるrs2) を初期化std::string rsします。インデックス 0 の文字 (つまり、最初の文字) から開始し、その後に 4 文字 (存在する場合) を取得してほしい」と伝えています。
クラスのオブジェクトを作成する前に、コンストラクターがどのように動作するかを知っておくことが重要です。すべてのstd::stringコンストラクターに関するドキュメントは、オンラインのさまざまな場所で検索して見つけることができます。
著者のメモ: この例では他にも多くのことが起こっており (代入演算子など)、多くの問題が隠されていることに注意してください。レベル。