Skocz do zawartości

Co robie źlę?


abq0

Recommended Posts

#include <iostream>
using namespace std;
int main()
{

    string tekst = "ala";
    string tablica[17];
    tablica[0] = "a";
    if(tablica[0] == tekst[0]){ cout << "Test"; }

system("PAUSE");
return 0;
}

Problem: W 8 linijce, komplikator mówi, że mam zły typ danych, czy coś.

Wiem, że coś z rodzajami zmiennych, niestety nie wiem, co robię źlę. Proszę o pomoc, w nakierowaniu mnie.

Link do komentarza
Udostępnij na innych stronach

Możesz przybliżyć cel poniższej linki? Kompletnie nie rozumiem o co chodzi.

if(tablica[0] == tekst[0]){ cout <std::basic_string::operator[] [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator](0u)'

Pierwszy błąd to niepoprawny operator << zaraz na początku. cout <std:: ... zamień na cout << std:: ... Następnie skoro użyłeś instrukcji using namespace std to w powyższej linijce usuń wszystkie std::. Brakuje także zakończenia bloku i instrukcji (cout).

//edit: Post jest przestarzały i niezgodny z obecną forma pytania

Link do komentarza
Udostępnij na innych stronach

Pomóc może zamiana tych linijek:

string tablica[17];
tablica[0] = "a";

Na takie (aby potem nie było problemu z porównaniem), ale można używać tylko pojedynczych znaków:

char tablica[17];
tablica[0] = 'a';

Aby działało bez zamiany typu, to w porównaniu tablica[0] == tekst[0] musiałbyś rzutować tekst[0] na typ string.

Link do komentarza
Udostępnij na innych stronach

Nie 'komplikator' a kompilator, nie 'rodzaje zmiennych' a typy zmiennych.

W c++ stringi są przechowywane jako tablica char'ów, nie da się porównywać w c++ stringa z char'em. W Twoim if'ie właśnie to robisz:

if(tablica[0] == tekst[0])

to tak naprawdę :

if(string == char)

więc rozwiązać Twój problem można na 2 sposoby:

  • porównać 2 char'y w taki sposób :

    if(tablica[0][0] == tekst[0])

  • lub zmienić typ zmiennej 'tablica' na char

    string tablica[17];

    tablica[0] = 'a';

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...