Pomiń nawigację

krajniak.info (rozwiń)

kolejne ciekawostki z placu boju

Wpis z dnia 2 listopada 2006, 23:56:14 w kategoriach c/c++/c#/php studia

Warte odnotowania na przyszłość, gdy po raz n-ty będę się zastanawiał dlaczego coś tak oczywistego nie działa:

int main(int argc, char *argv[])
{
    if(argv[1] == "dupa")
        cout << "yes yes yes" << endl;
    return 0;
}

natomiast już takie coś działa jak najbardziej:

int main(int argc, char *argv[])
{
    if(string(argv[1]) == "dupa")
        cout << "yes yes yes" << endl;

    return 0;
}

Czyż ten język nie jest piękny...

Przeczytaj poprzedni wpis Stacja meteorologiczna lub przejdź do następnego geniusz tracenia czasu albo wróć do reszty wpisów

Komentarze do notki 'kolejne ciekawostki z placu boju'

  1. tak – wskaźniki są piękne :)
    z uwielbienia do wskaźników programuję w php & javie ;)

    (chociaż na pewno coś tracę...)

  2. endl… Wy nie macie jak już bardziej zaśmiecać kodu? \n jest aż tak trudne w użyciu?

    A zamiast stringować argv, i porównywać zestringowane, lepiej jest użyć strcmp().

    Tylko po co programista C++ by miał coś robić prościej? Przecież robienie wszystko naobkoło jest fajniejsze, bo nic nie trzeba umieć.

  3. @Michał Górny – a czemu lepiej jest użyć strcmp? I czemu jest lepiej używać \n zamiast endl?

  4. Rzutując na „string” tworzysz nowy obiekt. Najprawdopodobniej jest wtedy allokowana nowa pamięć i stary tekst kopiowany. Po co?
    A jak się pozbyć cout (zamieniając na printf) i endl (\n), to będzie to już C, a nie C++ i od razu jest dużo przyjemniej. ;-)

  5. @jajcuś – ja to wiem, ale w takim razie może od razu to sprawdzenie trzeba przepisać w asemblerze? Poza tym czemu będzie przyjemniej, jak to będzie C?

  6. Widziałeś „;-)”?

    Ale pewne zalety używania C zamiast C++ są: mniejszy kod wynikowy (zapewne i w tym przypadku), w Linuksie brak zależności od libstdc++, którego ABI się często zmienia. Mniejsze wymagania co do kompilatora (problemy z kompatybilnością różnych kompilatorów C++ bywały bardzo częste i dość poważne).

    Języki wyższego poziomu są generalnie lepsze niż języki niskiego poziomu. Ale C++ to chyba jeden z najgorszych języków wysokiego poziomu. Jest strasznie skomplikowany i zachował wiele wad języka C (wskaźniki i ręczna allokacja pamięci, brak odśmiecacza). Jeśli ja mam wybierać między prostym językiem niższego poziomu©, a skomplikowanym językiem poziomu nieco wyższego (C++)... wybieram to pierwsze. W innych przypadkach zwykle użyję Pythona.

  7. ‘\n’ nie jest trudne w użyciu, brzydkie jest.
    strcmp, pewnie że można, zaoszczędzę trochę pamięci, zużycie procesora spadnie tylko że za chwil parę będę się zastanawiał do czego służył strcmp.
    A to rozwiązanie wydaje się najbardziej intuicyjne i ładnie wygląda ;)
    Cud, że nie musiałem definiować operatora ==, żeby cuś takiego osiągnąć
    lubię c++... naprawdę ;)

  8. Zależy od gustu. Dla mnie brzydkie jest dodawanie dodatkowego zapisu do strumienia dla jednego znaku.

    A instrukcje do operowania na ciągach znaków, tak czy siak powinieneś znać. A akurat ich nazwy są na tyle intuicyjne, że naprawdę trzeba się wysilić, żeby nie domyślić się, do czego służy strcmp().

    @vilma: Pisanie w Assemblerze sprawia problemy z przenośnością kodu. strcmp() nie powinno sprawić jakichkolwiek problemów pod jakąkolwiek platformą.

  9. Nie widze tutaj nic dziwnego… Jak ty chcesz porównywać tablice charów ze zwykłym napisem ?? do tego służy strcmp z tego co pamiętam!

Dodaj komentarz:

Zastrzegam sobie prawo do usuwania komentarzy nie odnoszących się do treści wpisu.

Przeczytaj poprzedni wpis Stacja meteorologiczna lub przejdź do następnego geniusz tracenia czasu albo wróć do reszty wpisów