Getline spadł z rowerka

Getline spadł z rowerka
Krzysztof Miller
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:10
0

Witam. Nie działają mi getline, po prostu są pomijane. Jeśli wytnę treść z case do oddzielnego programu to działa. Pomocy.

Kopiuj

#include <iostream>
#include <algorithm>
#include <conio.h>

using namespace std;
int swicz;
string jeden, dwa, zdanie2, zdanie3, szukaj3;

int main()
{
    cout<<"Co chcesz robic?"<<endl;
    cout<<"1. Laczenie"<<endl;
    cout<<"2. Zmiana Wielkosci"<<endl;
    cout<<"3. Szukanie wyrazu w zdaniu"<<endl;
    cin>>swicz;
    switch(swicz){
    case 1:{
        cout<<"Podaj pierwszy i drugi wyraz"<<endl;
        cin>>jeden>>dwa;
        string trzy=jeden+dwa;
        cout<<endl<<trzy;
        break;
    }
    case 2:{
        cout<<"Podaj zdanie: ";
        getline(cin, zdanie2);
        transform(zdanie2.begin(), zdanie2.end(), zdanie2.begin(),::toupper);
        cout<<endl<<zdanie2;
        transform(zdanie2.begin(), zdanie2.end(), zdanie2.begin(),::tolower);
        cout<<endl<<zdanie2;
        break;
    }
    case 3:{
        cout<<"Podaj zdanie: ";
        getline(cin, zdanie3);
        cout<<"Podaj czego szukasz";
        getline(cin, szukaj3);
        size_t pozycja=zdanie3.find(szukaj3);
        if(pozycja!=string::npos) cout<<"Znaleziono na pozycji "<<pozycja;
        else cout<<"Nie znaleziono";
        break;
    }
    default: cout<<"Zla opcja"; break;
    }
    return 0;
}

edytowany 1x, ostatnio: Krzysztof Miller
LI
LongInteger
Btw. co to jest "Laczenie"? Że niby laczki ma program włożyć? :>
lgtk
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 22 godziny
1

To wsadz je na rowerek i kod wrzuć jak człowiek swiczu jeden.

edytowany 1x, ostatnio: lgtk
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
4

cin>>swicz nie zjada znaku nowej linii który podajesz z klawiatury jak stukasz enter i potem getline zjada tenże znak zamiast twoich danych :( Potrzbujesz jakieś cin.ignore albo dodatkowy getline albo coś w tym stylu.
Z innej beczki #include <conio.h>? Serio? Mamy rok 2020 xD Czemu korzystasz z jakiejś książki która jest starsza od ciebie?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
Krzysztof Miller
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:10
0
Shalom napisał(a):

cin>>swicz nie zjada znaku nowej linii który podajesz z klawiatury jak stukasz enter i potem getline zjada tenże znak zamiast twoich danych :( Potrzbujesz jakieś cin.ignore albo dodatkowy getline albo coś w tym stylu.
Z innej beczki #include <conio.h>? Serio? Mamy rok 2020 xD Czemu korzystasz z jakiejś książki która jest starsza od ciebie?

To jak zrobić getch() bez #include <conio.h>?

edytowany 1x, ostatnio: Krzysztof Miller
enedil
Ciekawe pytanie, ale ważniejsze, po co w ogóle używać getch?
Krzysztof Miller
To co zrobić żeby wpisać znak bez klikania enter? Jest jakies zastępstwo dla getch?
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
Kopiuj
#include <iomanip> // for ws
...
cin>>ws>>jeden>>dwa;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1
Kopiuj
std::getline(std::cin >> std::ws, zdanie2);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.