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ć?
3 odpowiedzi
"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')
"s"
to literał ciągu C, jeśli chcesz porównać ze znakiem, użyj 's'
.
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.
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .