0

そのため、ユーザーからの入力を取得し、それを 2 つの別々のデータ型に格納する最良の方法を理解するのに少し助けが必要です。私がやりたいのは、入力例を取ることです:

remove 44

最初の部分「削除」を取り、それを文字列として保存して、どの関数を呼び出す必要があるかを知りたいのですが、44 を取り、それを int として保存して、その関数への入力にします。これまでのところ、私が持っているのは

string In;
getline (cin, In);

ここで、getline を変更してスペースを区切って 2 つの文字列を取得する必要があります。その場合、どうすればそれを行うことができますか、それとも入力全体を取得してそこから 2 つの部分文字列を作成する必要がありますか?

これは非常に単純な問題であることはわかっていますが、C++ でユーザー入力を扱った経験はあまりありません。どんな助けでも大歓迎です。

4

1 に答える 1

1

これを行うには、次のようにして operator>> をオーバーロードできます。

struct SomeStruct
{
    string id;
    int data;
};

istream & operator>>(istream& is, SomeStruct& someData)
{
    is >> (string&)someData.id;
    is >> someData.data;

    return is;
}

じゃあ後で

SomeStruct test;
cin >> test;

operator>> の詳細については、istream::operator>>を参照してください。

演算子のオーバーロードの詳細については、C++ 演算子のオーバーロードのガイドラインを参照してください。

于 2012-04-12T01:12:11.633 に答える