Jeśli udało się odczytać wartość char
Ostatnio zmodyfikowano 2017-07-27 14:52
Streamline Temat założony przez niniejszego użytkownika |
Jeśli udało się odczytać wartość char » 2017-07-26 13:34:33 Cześć Funkcja ma przypisywac 'b' wartosc '0' jezeli do "ch" podano enter zamiast ciagu znakow lub cyfry. Ten ciąg znaków może być dwoma wyrazami. Problem w tym, że nie wiem w jaki sposób tego dokonać. W tej chwili, w każdej sytuacji(czy podam tekst czy nie) zawsze otrzymuję wartość 1. void setgolf( golf & g ) { char ch[ 40 ]; int b; std::cout << "Podaj nazwisko: "; std::cin.getline( ch, 40 ); if( ch == '\n' ) { b = 0; } else { b = 1; } std::cout << "Podaj handicap: "; std::cin >> g.handicap; std::cout << b; }
|
|
pekfos |
» 2017-07-26 13:39:20 Twoje porównanie nie ma sensu. Porównujesz tablicę znaków z jednym znakiem. |
|
latajacaryba |
» 2017-07-26 14:29:19 znak nowej linii(entera): '\n' c-string którym jest tylko znak nowej linii: "\n" Różnica? W c-stringu masz na końcu znak NULL. Dzięki temu znakowi wiadomo, że w tym miejscu jest koniec stringa Więcej tutaj |
|
nanoant20 |
» 2017-07-26 18:33:47 czy moze o to ci chodzi cout << "Podaj nazwisko: "; cin.getline( ch, 40 ); if( ch[ 0 ] == '\0' ) cout << "0"; else cout << "1";
|
|
latajacaryba |
» 2017-07-27 12:28:58 [do usunięcia] |
|
pekfos |
» 2017-07-27 14:36:48 Sprawdzasz więc, czy masz po prostu pustego stringa, czyli coś takiego:
|
Co?! Natomiast, jeżeli chcesz sprawdzić, czy jedynym znakiem w stringu (przypominam, że mówiąc jedyny mam na myśli jedyny oprócz null'a, który to null jest tam zawsze) jest enter, robisz coś takiego: |
W jakim dokładnie scenariuszu miałbyś tam tylko znak nowej linii? getline kończy na \n ale go nie zapisuje do stringa. The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s. |
Brawo, napisałeś całą kupę bzdur. |
|
latajacaryba |
» 2017-07-27 14:52:06 W takim razie przepraszam autora, dawno nie operowałem na tablicach znaków i wiedza wywietrzała. Natomiast wydawało mi się poprawne sprawdzanie czy pierwszym znakiem cstringa jest null, bo jest on pusty. A co do sprawdzania znaku nowej linii, to nie pomyślałem, że przecież pobieranie znaków kończy sie na enterze... |
|
« 1 » |