0

ユーザー指定の文字列をstringstreamで変換することにより、int値をベクトルに追加しようとしています。ユーザーは次のようなデータを提供します:1,5,6,7,4なので、intがいくつあるか正確にはわかりません。

現在、最初に入力した番号のみを取得しています。残りは無視されます。これは私が欲しいものです:

stringstream ss;
int tmpInt;
string data;

cout << "Enter data: (1,2,3,4 etc.)";
getline(cin, data);

ss.str(data);

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
}
4

1 に答える 1

3

ignoreカンマを確認する必要があります。

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
    ss.ignore();
}

現在、抽出は整数の読み取りを試み、コンマがあることを検出し、ストリームを失敗状態のままにします。

または、文字が実際にコンマであるかどうかを確認する場合(入力の検証のため)、次のようにすることができます。

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
    if (ss.get() != ',') break;
}
于 2013-03-22T23:51:28.630 に答える