Prosta instrukcja if nie wykonuje się(C++)

0

Witam, czy mógłby mi ktoś wytłumaczyć dlaczego if się nie spełnia? Kiedy wywołałem cout'em zmienną dwaZnaki to pokazała dokładnie ►á

 #include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
int main()
{
    char znak = 16;
    char znak2 = 160;
    string dwaZnaki = "";
    dwaZnaki += znak;
    dwaZnaki += znak2;
 
    cout << dwaZnaki << endl;
 
    if (dwaZnaki == "►á")
    {
            cout << "Działa" << endl;
    }
 
    _getch();
    return 0;
}
 
```cpp


Zamienienie ifa na if (dwaZnaki[0] == 16 && dwaZnaki[1] == 160) także nie działa. Pozdrawiam. ;)
0

Bo te znaki to nie 16 i 160 w reprezentacji asci.

Sprawdz sam

cout << (int)"►á"[0] << (int)"►á"[1] << endl;
 

Kodowanie twojego pliku ma znaczenie.

3
if (dwaZnaki == "►á")

Widocznie plik źródłowy masz w innym kodowaniu i te znaki nie mają kodów 16 i 160.

Takie coś zadziała:

    if (dwaZnaki == "\x10\xA0")

Zamienienie ifa na if (dwaZnaki[0] == 16 && dwaZnaki[1] == 160) także nie działa.

Musisz rzutować inta na char, bo jakiś debil wymyślił że char jest signed w zakresie -128..127.

    if (dwaZnaki[0] == (char)16 && dwaZnaki[1] == (char)160)

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