Wczytywanie po jednym zdaniu do wektora. Funkcja getline
Ostatnio zmodyfikowano 2020-05-03 12:54
wojownik266 Temat założony przez niniejszego użytkownika |
Wczytywanie po jednym zdaniu do wektora. Funkcja getline » 2020-05-02 21:24:49 Zabrałem się za pisanie programu który wczytuje po jednym zdaniu do wektora a następnie wyświetla te zdania i ile liter zawierają. Program na chwilę obecną bardz ładnie się kompiluje i uruchamia ale nie wczytuje i nie wyświetla wpisanych zdań... Możecie powiedzieć co źle zrobiłem? Podejrzewam że coś z funkcją getline jest nie tak! #include <iostream> #include <vector> #include <string> using namespace std;
int main() { int ile_wierszy = 0; cout << "Ile zdan chcesz wprowadzic?:"; cin >> ile_wierszy; vector < string > tex( ile_wierszy ); for( auto i = 0; i < ile_wierszy; i++ ) { cout << "Linia wierszu nr: " << i << " "; cin >> tex[ i ]; } cout << endl; for( auto i = 0; i < ile_wierszy; ++i ) { cout << "Wprowadzono tekst:" << tex[ i ] << endl; } int dlugosc = 0; for( auto i = 0; i < ile_wierszy; ++i ) { dlugosc = tex[ i ].length(); cout << "Wiersz: " << tex[ i ] << " zawiera:" << dlugosc << " znakow" << endl; } cout << endl; cin.get(); cin.get(); return 0; }
|
|
nanoant20 |
» 2020-05-02 21:49:54 Możecie powiedzieć co źle zrobiłem? Podejrzewam że coś z funkcją getline jest nie tak! |
- nie pchasz do vectora, - cin >> tex[ i ]; to jakieś nieporozumienie, itd... Trzeba powołać do życia zmienną typu string, pobrać getline od użytkownika i pchnąć do kontenera przy pomocy np. push_back() - do sprawdzenia, czy coś jest w vector'ze służy funkcja empty <--solution remove |
|
pekfos |
» 2020-05-02 22:32:04 - nie pchasz do vectora, - cin >> tex[ i ]; to jakieś nieporozumienie, itd... |
Jego kod jest poprawniejszy. Wie ile potrzebuje elementów wektora i tworzy je z góry. vector < string > tex( ile_wierszy );
Podejrzewam że coś z funkcją getline jest nie tak! | std::getline() mi nie działa! |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2020-05-02 22:32:08 Nie wiem co ja bym bez Ciebie zrobił!? Dzięki! |
|
nanoant20 |
» 2020-05-02 22:55:45 - nie pchasz do vectora, - cin >> tex[ i ]; to jakieś nieporozumienie, itd...
| Jego kod jest poprawniejszy. Wie ile potrzebuje elementów wektora i tworzy je z góry. |
To co na początku robi to ok. cin >> ile_wierszy; vector < string > tex( ile_wierszy );
Skoro twierdzisz, że pierwotne (originalne) rozwiązanie jest poprawniejsze to zostawmy je na forum my solution remove możesz to zademonstrować jak pchać i po co?, do vectora taki tex[i] cin >> tex[ i ] , czy getline( cin, tex[ i ] ); ? |
|
pekfos |
» 2020-05-02 23:24:10 Ale po co pchać? Ilość elementów jest z góry znana. Jeśli koniecznie chcesz, to reserve() + push_back(). |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2020-05-03 12:54:48 Teraz już wszystko jasne...Dziękuję za odpowiedzi i życzę miłego dnia! |
|
« 1 » |