Como extrair formato misto usando istringstream

Por que meu programa não produz:

10
1.546
,Apple 1

ao invés de

10
1
<empty space>

aqui está o meu programa:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main () {
    string str = "10,1.546,Apple 1";
    istringstream stream (str);
    int a;
    double b;
    string c, dummy;
    stream >> a >> dummy >> b >> dummy >> c;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    return 0;
}

Basicamente, estou tentando analisar as seqüências separadas por vírgula, qualquer maneira mais suave de fazer isso me ajudaria imenso.

questionAnswers(4)

yourAnswerToTheQuestion