Odpowiednik funkcji split?

0

Cześć,
czy istnieje w C++ jakiś odpowiednik funkcji z Visual Basic – split?
Mam taki kod i chce by w indata[] znalazły się kolejne, co ważne, liczby wpisane w konsoli.

    int indata[num];
    string indatastr;
    cout << "Podaj drugi wiersz wejscia (dane oddzielone spacjami):" << endl
    << "  ";
    cin >> indatastr;

Wpisuje takie coś: „1 35 56” i chce otrzymać indata[0]=1; indata[1]=35; indata[2]=56;

0
  1. Żeby wczytać string ze spacjami musisz użyć getline() bo cin>> czyta do pierwszej spacji
  2. Istnieje istringstream które robi to o co pytasz.
    Aczkolwiek nie prościej w pętli wczytywać do tablicy od razu inty?
0

A jak mogę tego użyć? : /

    int indata[num];
    string indatastr;
    cout << "Podaj drugi wiersz wejscia (dane oddzielone spacjami):" << endl
    << "  ";
    cin.getline(indatastr, 1024); //Już tu mam błąd : (
    
    stringstream numstr (stringstream::in | stringstream::out);
    for (int n=0; n<6; n++) {
        ss >> val;
        cout << val*2 << endl;
    }

Z góry dziękuję i przepraszam,
ale dopiero dziś zaczełem się bawić z C++ i prawie nic w nim nie potrafię <cry>

0

Wczytanie linii

getline(cin, indatastr);

Wykorzystanie istringstream

istringstream numstr(indatastr);
for(int n = 0; n < 6; n++)
{
    numstr >> val;
    cout << val*2 << endl;
}
0

A nie prościej:

int jeden, dwa, trzy;
cin >> jeden; cin >> dwa; cin >> trzy; 

??

0

Ale nie zorientujesz się kiedy jest koniec linii, możesz też nie wiedzieć ile w linii jest liczb.

0

To można zawsze kończyć jakimś znakiem... np. 0. Często taki sposób jest wygodniejszy.

0
Luke24 napisał(a)

To można zawsze kończyć jakimś znakiem... np. 0. Często taki sposób jest wygodniejszy.

Nie należy komplikować danych wejściowych tylko dlatego, że brakuje nam wbudowanej funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1