Utermiko Opublikowano 30 Maja 2012 Udostępnij 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ź. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Maja 2012 Administratorzy Udostępnij Opublikowano 30 Maja 2012 http://stackoverflow.com/questions/5888022...y-single-spaces i ogólnie w googlach poszukaj "string space split" albo coś takiego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 30 Maja 2012 Udostępnij 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. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 30 Maja 2012 Autor Udostępnij 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ą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 30 Maja 2012 Udostępnij Opublikowano 30 Maja 2012 int size; cin >> size; int *array = new int[size]; for( int i = 0; i < size; i++ ) cin >> array[i]; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 30 Maja 2012 Udostępnij Opublikowano 30 Maja 2012 Nie zapominajmy o delete [] array; na końcu programu. ;> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 30 Maja 2012 Autor Udostępnij 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ąć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 30 Maja 2012 Udostępnij Opublikowano 30 Maja 2012 Nie zapominajmy o delete [] array; na końcu programu. :sp_ike: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi