Jak użyć getline jako warunek pobierania nowej linii

0

Witam,
Mam takie zadanie, by wykonywać pewne czynności dopóki użytkownik wpisuje coś z klawiatury.
Więc chyba pasowałaby tutaj pętla while z warunkiem getline. Tylko niestety jakkolwiek modyfikuję ten warunek, program nie chce mi działać, bądź kompiluje się, ale nie pokazuje właściwych wartości :/

Mam tablicę char-ów wpisywaną z klawiatury i warunek taki:
while (getline(cin, wyraz))
natomiast pojawia się error: no matching function for call to 'getline(std::istream&, char&)'

Proszę o pomoc doświadczonych programistów w napisaniu warunku, bo siedzę już nad tym parę godzin i bez rezultatu :/:/

7

Użyj std::string:

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

Używam using namespace std, więc warunek pozostawiam taki sam.

Jednak w kodzie cezara nadal nie sprawdza mi się moje rozwiązanie - program wysypuje się po pierwszym razie:/

Tzn. zamienia litery przy pierwszym wpisaniu (przesuwa o 3 miejsca), potem już się wysypuje.

Czy ktoś mógłby jeszcze doradzić, jak powinienem zmienić warunek w pętli?

1

Powyższy kod nie powinien Ci się skompilować. Używasz tablicy int liczba[dlugosc]; o długości nieznanej w czasie kompilacji. Zresztą wcale jej nie potrzebujesz. A poza tym, to u mnie działa i się nie wysypuje.

0
#include <cctype>
#include <cassert>

using namespace std;

auto cezar(const string& s, int shift = 3) -> string
{
    const auto alphabetSize = 'z' - 'a' + 1;
    assert(shift > -alphabetSize && shift < alphabetSize);
 
    shift = (shift + alphabetSize) % alphabetSize;
    
    auto result = s;
    for (auto& ch : result)
    {
         if (isupper(ch))
         {
            if (ch + shift > 'Z') 
                ch = ch + shift - alphabetSize;
            else
                ch = ch + shift;
         } 
         else if (islower(ch))
         {
            if (ch + shift > 'z') 
                ch = ch + shift - alphabetSize;
            else
                ch = ch + shift;
         }
    }
    return result;
}
0
GutekSan napisał(a):

Powyższy kod nie powinien Ci się skompilować. Używasz tablicy int liczba[dlugosc]; o długości nieznanej w czasie kompilacji. Zresztą wcale jej nie potrzebujesz. A poza tym, to u mnie działa i się nie wysypuje.

Tak, rzeczywiście, tutaj powinienem wykasować tę tablicę, bo jest niepotrzebna.

Dzięki za pomoc!

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