[C++] ISO C++ forbids comparison between pointer and integer

VR8

Moderator
Członek Załogi
Dołączył
Wrzesień 24, 2011
Posty
325
Witam.
Mam błąd w linijce
Kod:
const char* ZMIENNA = "111111111111111111111111";
Idzie to jakoś naprawić?
Próbowałem bez cudzysłowiów, z apostrofami i nie działa.

Program ma na celu porównać tą zmienną z wartością podaną przez użytkownika.
 

cpp

Użytkownik
Dołączył
Luty 3, 2012
Posty
7
VR8@ proszę:

Kod:
#include <iostream>
#include <cstring>
#include <conio.h>

using namespace std;

int main()
{

    const char *STALA = "111";
    char *napis = new char[80];

    cin >> napis;

    if (strcmp(STALA,napis) != 0 )
        cout << "\nNapisy nie zgadzaja sie";
    else
        cout << "\nOK";

    getch();

    delete []STALA;
    delete []napis;

    return 0;
}

1. plik nagłówkowy cstring daje funkcję strcmp (string compare)
2. jeśli coś jest const to nie jest zmienne tylko stałe
3. jeśli tworzy się pojedynczą zmienną lub całą tablicę poprzez wskaźnik, należy używać operatora new, jak w kodzie
4. ostatecznie należy zwolnić pamięć operatorem delete

Zerknij jeszcze na: http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

Inna możliwość zaprojektowania kodu:
Kod:
#include <iostream>
#include <cstring>
#include <conio.h>

using namespace std;

int main()
{
    const char *STALA = new char[3];

    STALA = "111";

    char *napis = new char[80];

    cin >> napis;

    if (strcmp(STALA,napis) != 0 )
        cout << "\nNapisy nie zgadzaja sie";
    else
        cout << "\nOK";

    getch();
    delete []STALA;
    delete []napis;

    return 0;
}

Czemu do licha post nie ląduje na końcu tylko na górze???
 
Ostatnia edycja:
Do góry Bottom