Brak danych do tablicy char

0

Witam,
Problem chyba dosyć prosty, ale męczę się z nim już całkiem długo. Kod przykładowy, napisany wyłącznie na potrzebę problemu:

void funckjajakas(void)
{
    using namespace std;
    char hehe[20];
    cin.getline(hehe, 20);
    if()
        break;
    //reszta instrukcji
}

Chciałbym móc sprawdzić, czy zostały podane jakiekolwiek dane, a jeśli nie, to przejść do break. Jak to zrobić?

1

Próbowałeś wstawić getline do if? Coś mi intuicja mówi że może zadziałać.

1
if(cin.getline(hehe, 20)) // ...

Ale nie lepiej tak?

std::string str;
while(std::getline(std::cin, str)) // ...

Nie musisz się martwić o wielkość bufora ani o przekazywanie jego wielkości do funkcji.

0

Chodzi mi bardziej o to, że gdy będać proszonym o podanie danych do tablicy char i wciskając enter bez podania niczego inngo (czyli w buforze znajduje się jedynie \n które i tak jest usuwane przez getline) funkcja by się przerywała, a w wypadku podania danych szła dalej. Poza tym muszę to zrobić na tablicy char, bo tak Pan Prata każe :p

1

Dobra, już sam rozwiązałem :D. Gdyby ktoś kiedyś miał taki problem, to uwaga tłumaczę!

void funckjajakas(void)
{
    using namespace std;
    char hehe[20];
    cin.getline(hehe, 20);
    if(hehe[0]=='\0')
        break;
    //reszta instrukcji
}

Ostatnii znak łańcuha znaków char zawsze jest ustawiany na null, żeby zakomunikować koniec łańcucha. W związku z brakiem wpisania jakichklolwiek danych, pierwszy znak łańcucha jest jednocześnie końcowym, więc zachodzi if(hehe[0]=='\0') i funkcja jest zatrzymywana.

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