ENTER zamiast podania zmiennej String, jak to wykryc?

0

Może problem jest banalny, ale jestem zdecydowanie Newbie i po dłuższym przeszukiwaniu neta nadal nie potrafie sobie poradzić.
Jak sprawdzić, czy ktoś, zamiast wpisać wartość do zmiennej string o która go proszę, wali tylko w enter? Efekt jest taki że linijki się przesuwają, a program nie idzie dalej bo nie podano wartości. Jeżeli nie zrozumieliście o co chodzi tak ma to mniej więcej wyglądać

  1. "Podaj wartość zmiennej tekst"
  2. (użytkownik wali w enter bez wpisania czegokolwiek)
  3. "Nie podałeś wartości tekst, podaj wartość!"
    Oczywiście to będzie w pętli.
    Kombinowałem już z tym że tekst= "", tekst= "\n", tekst= std::endl; (to był już akt desperacji), próbowałem z metodą tekst.empty() (podobno zwraca 0 gdy string jest pusty), tylko że jeżeli ten ktoś naciska enter to w ogóle nie podaje wartości, nawet pustej (tutaj możliwe że czegoś nie do końca rozumiem). Chciał bym używać string i generalnie korzystać z STL, bo jakoś nie widzi mi się pracowanie z Char... (chyba że inaczej się tutaj nie da...)
    Błagam o litość, w końcu to dział Newbie, na dodatek to mój pierwszy post tutaj :)
1

pokaż jakiś kod.

powinno działać if (tekst == ""), albo if (tekst.empty())

1

Jak robisz konsolowy program interaktywny i zależy Ci na dokładnym przekazaniu zachowania użytkownika, to powinieneś użyć jakieś biblioteki konsolowej, np. curses (*nix), czy "conio.h" (DOS/Windows).

Ten problem wynika z tego, że chcesz wczytać słowo z wejścia do zmiennej string po przez cin>>zmienna. Domyślnym zachowaniem tej funkcji jest ignorowanie wszystkich białych znaków przed początkiem słowa (czyli znak "nie biały"). Podczas wciskania przez użytkownika z namiętnością "enter" twój program siedzi w tej funkcji i czeka na coś, co będzie mógł przerobić na stringa. Zawsze możesz użyć cin.getline().

0

Po dłuższym szukaniu w końcu znalazłem/wymyśliłem:

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
string tekst;
cout << "Podaj jakis wyraz!" << endl;

do {
getline(cin,tekst);
if (tekst == "") {cout << "Nic nie wpisales!" << endl; }
} while (tekst=="");

return 0;
}

Teraz jeżeli walniemy enter bez wpisywania czegokolwiek wyskoczy "Nic nie wpisales!"
O cos tak prostego właśnie mi chodziło :)
Cały myk jest w tym

getline(cin,tekst)

Dzieki za pomoc Azarien i Zjarek!
TEMAT DO ZAMKNIĘCIA

1 użytkowników online, w tym zalogowanych: 0, gości: 1