Utermiko Opublikowano 30 Maja 2012 Opublikowano 30 Maja 2012 Witam. Przepraszam za banalne pytanie, lecz nigdzie nie mogę znaleźć na to odpowiedzi. Język to C++. Mianowicie chodzi mi o to, jak wczytać kilka liczb w jednym wierszu strumieniem wejścia (std::cin). Chodzi mi o to, że jak wpiszę w konsoli np. 3 18 632 831 to 3 powędruje np. do tab[0], 18 do tab[1], 632 do tab[2] itd... Może też być, że po użyciu std::cin nie przenosi kursora do następnej linijki. W skrócie chodzi mi o: "Wczytaj kilka liczb w jednym wierszu, które są porozdzielane spacjami." Czy jest taka możliwość, czy trzeba wczytywać to jako std::string i porozdzielać samodzielnie? Z góry dziękuję za odpowiedź.
Administratorzy gnysek Opublikowano 30 Maja 2012 Administratorzy Opublikowano 30 Maja 2012 http://stackoverflow.com/questions/5888022...y-single-spaces i ogólnie w googlach poszukaj "string space split" albo coś takiego.
Maximal Opublikowano 30 Maja 2012 Opublikowano 30 Maja 2012 Bufor strumienia jest czyszczony przez trzy znaki: nowej linii (enter), tabulacji (tab) i spacji. Tak więc chcąc wczytać kilka wartości w taki sposób: cin >> a; cin >> b; cin >> c; cin >> d; dane wejściowe możesz sformatować tak: 3 18 632 831 ... ale również tak: 3 18 632 831 Krótko mówiąc: dane separują spacja, enter i tabulator. :)
Utermiko Opublikowano 30 Maja 2012 Autor Opublikowano 30 Maja 2012 ... ale również tak: 3 18 632 831 No ale jak wczytać w ten sposób dane, np. do tablicy, którą wielkość ustala użytkownik? Kiedy dam cin>>a; to mi przeskakuje do kolejnej linii. Zrobiłem sobie sposób ze stringiem (pewnie mało optymalny ale jest :P), że ładuje znaki do tab[0], a jak napotka spację to ładuje do tab[1], aż do końca stringa. Jeśli potrzeba liczb, to po prostu je konwertuję później. Nie czuję się zbyt dobrze w C++ no ale cóż. Na OIG nie ma C# :P @EDIT Chodzi mi o to, że na początku mnie zapyta "Ile liczb wczytać?" i wpiszę powiedzmy 7, a później muszę wpisać 7 liczb porozdzielanych spacją.
Tymon Opublikowano 30 Maja 2012 Opublikowano 30 Maja 2012 int size; cin >> size; int *array = new int[size]; for( int i = 0; i < size; i++ ) cin >> array[i];
Maximal Opublikowano 30 Maja 2012 Opublikowano 30 Maja 2012 Nie zapominajmy o delete [] array; na końcu programu. ;>
Utermiko Opublikowano 30 Maja 2012 Autor Opublikowano 30 Maja 2012 Heh, nie wiedziałem, że to aż takie proste :P W sumie można było się domyśleć o co chodzi po zdaniu Maximala: Bufor strumienia jest czyszczony przez trzy znaki: nowej linii (enter), tabulacji (tab) i spacji. @UP Pamiętam :) Dziękuję za pomoc. Temat można zamknąć.
Tymon Opublikowano 30 Maja 2012 Opublikowano 30 Maja 2012 Nie zapominajmy o delete [] array; na końcu programu. :sp_ike:
Rekomendowane odpowiedzi