3

だから私の質問はかなり単純です(私は願っています)。現在、次のようなコンストラクタを持つクラスがあります。

Constructor(String szName)

文字列は名前を保持します。これは複数の部分である場合があります。したがって、John、John Smith、John H Smith はすべて有効な入力でなければなりません。私は次のことができることを知っています:

std::string input;

getline(cin, input);
myClass Foo(input);

そしてそれはうまくいくでしょう。しかし、コンストラクターに getline 入力を直接送信する方法はありますか?

よろしくお願いいたします。

4

3 に答える 3

3

別の関数を作成しても問題ない場合は、次のようにすることができます。

std::string readLine()
{
    std::string input;
    getline(cin, input);
    return input;
}

次に、クラスを次のように初期化します。

myClass Foo(readLine());
于 2013-08-19T17:11:03.177 に答える
1

そうしても意味がありません。文字列を保存するには同じ量のメモリが必要になるため、それは単なるセマンティックシュガーになります。大きなコード ブロックに変数を追加するとメモリ使用量が増加することが懸念される場合は、次のように getline 呼び出しを {} で囲むことができます。

{
  string input;
  getline(cin, input);
  myClass Foo(input);
}

そして、変数はそのようなブロック内にのみ存在します。しかし、そうすることには大きな利点はありません (少なくとも、そのような単純なコードの場合はそうではありません)。

于 2013-08-19T17:21:30.610 に答える