Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie po jednym zdaniu do wektora. Funkcja getline

Ostatnio zmodyfikowano 2020-05-03 12:54
Autor Wiadomość
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!

C/C++
#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 ];
        //getline(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;
}
P-176791
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
P-176792
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.
C/C++
vector < string > tex( ile_wierszy );

Podejrzewam że coś z funkcją getline jest nie tak!
» Kurs C++ / FAQstd::getline() mi nie działa! pytanie/odpowiedź
P-176795
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!
P-176796
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.
C/C++
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 ] );
?

P-176801
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().
P-176802
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!
P-176805
« 1 »
  Strona 1 z 1