Więc w zasadzie mam tablicę ciągów, powiedzmy a[i][b];

Więc kod wygląda mniej więcej tak -

for(int i = 0; i < 3; i++) {
  for(int n = 0; b < 3; b++) {
    if(a[i][b] == "s") {
     cout << a[i][b] << endl;
    }
  }
}

Tablica istnieje i mogę to sprawdzić, jeśli po prostu pokażę na konsoli a[i][b] bez instrukcji if, ale z instrukcją if daje mi ten błąd -

błąd: ISO C++ zabrania porównywania wskaźnika z liczbą całkowitą

Czy jest jakiś sposób, aby to naprawić?

1
user1223540 21 luty 2012, 18:10

3 odpowiedzi

Najlepsza odpowiedź

"s" jest literałem ciągu, tj. tablicą znaków, więc rozpada się na wskaźnik. Aby po prostu porównać do znaku, użyj pojedynczych cudzysłowów:

if (a[i][b]=='s')
5
BoBTFish 21 luty 2012, 18:13

"s" to literał ciągu C, jeśli chcesz porównać ze znakiem, użyj 's'.

3
Karoly Horvath 21 luty 2012, 18:13

Umieść s w pojedynczych cudzysłowach, takich jak ten 's'
"s" to tekst, aw C++ nie ma klasy String (natywnej). Więc "s" jest właściwie wskaźnikiem do sekwencji znaków, a a[i][b] to tylko pojedynczy znak.

1
shift66 21 luty 2012, 18:28