[c++] Użycie stringu jako warunku w pętli do while

Witam, jestem początkującym programistą i napotkałem sie dzisiaj na pewien (z pozoru bardzo prosty) problem z którym nie mogę sobie poradzić. Korzystam z:

  • Windowsa Xp

  • kompilatora Dev C++ 4.9.9.2

Listing programu:

#include 

#include 

#include 

using namespace std;

int main()

{

string wyraz;

do{

cout << "Napisz jakis wyraz?";

cin>> wyraz;

cout<<"\n To nie jest prwadidlowy wyraz! \n";

         }

while(wyraz!="kot");


cout<<"\n Brawo! O ten wyraz chodzilo.!";


getchar();

return 0;

}

Program się odpala (debuger nie pokazuje błędów), ale gdy wpisze w konsoli słowo kot program się “wywala”, zamiast przejść do linijki:

cout<<"\n Brawo! O ten wyraz chodzilo.!";

Mógłby mi ktoś powiedzieć dlaczego tak się dzieje?

Z góry dziękuje

bolok , nazwij proszę temat konkretnie, bez zbędnych problemów w tytule. Inaczej wyciągnę konsekwencje. Przeczytaj proszę ten temat. viewtopic.php?f=16&t=394978

A wypluwa jakiekolwiek komunikaty? Pomijając formatowanie i logikę, to kod jest poprawny w tym sensie, że powinien się kompilować i nie powinien się wywracać.

Witam.

Ja bym zamiast takiego porównania (!=) zastosował metodę porównującą dostępną na rzecz obiektu wyraz i warunek przerobił na taki

while (wyraz.compare(string("kot")) != 0);

Spróbuj tak i daj znać czy się poprawiło.

Jeżeli nie to może jakieś informacje o rodzaju błędu, że nie można porównywać stringa z tablicą znaków, albo coś podobnego. Napisz co powiedział przed zakończeniem, albo daj zrzut ekranu.

Powodzenia.

opat , w C++ można porównywać stringi (std::string) za pomocą operatorów.

bolok , zamień:

getchar();

na:

cin.sync();

cin.get();

zas:

#include

wywal.

alex , wielkie dzięki już wszystko działa.