Szczerze mówiąc, ucząc się języka C++ nigdy nie wziąłem książki (nie płonę proszę). Najlepszą radą, jaką mogę dać, jest przejście na this page i przejście przez samouczek. Obejmuje on większość języka C++ (czytaj: najczęściej używane funkcje) i sprawia, że jest to tak proste, jak to tylko możliwe. Jeśli chodzi o API, które są ważne ... cóż, to kwestia preferencji. Żaden pakiet narzędzi/api naprawdę nie "wygrał", ale Qt, GTK - (gtkmm) i wxWidgets są dużymi graczami. Poza GUI, prawdopodobnie będziesz chciał nauczyć się zarówno surowych interfejsów winsock2 i wątków API, jak i wątków biblioteki boost oraz interfejsów sieciowych.Zgadzam się, że MFC umiera, a dla samego Windowsa C# odgrywa coraz większą rolę (nawet na linuksie/mono C# zaczyna powoli łapać ...).
Najlepszym sposobem nauki języka jest również kodowanie. Więc nie czytaj całej sprawy - bez praktycznego doświadczenia nigdy nie nauczysz się tego języka. Zadawaj pytania, odpowiadaj na te, które możesz, i pisz samouczki - dla siebie, jeśli nikt inny. Zapisywanie tego, czego się nauczyłeś, jest świetnym odniesieniem, a proces wyprostowania wszystkiego w twojej głowie, aby zapisać go w taki sposób, że inna osoba może go zrozumieć sam jest świetnym sposobem na wzmocnienie koncepcji. W dziwny, ale pozornie odwrotny sposób znalazłem najlepszy sposób, w jaki uczę się programowania, pomagając innym ludziom w ich pytaniach.
@ Neil - nie zgadzam się z tym, że samouczki online są "nie na miejscu". Jeśli już, to styl, którego uczą, może być nastawiony na czytelność, a nie na optymalizację - co w mojej-nie-tak-skromnej opinii jest zaletą. Z mojego ograniczonego doświadczenia znalazłem cplusplus.com jako odnośnik do prawie wszystkiego.
W szczególności, aby odpowiedzieć na pytania: 1. Nie wymaga grubej książki. Słyszałem, że te cieńsze mogą być przydatne jako szybkie odniesienie.
To całkowicie subiektywne i zależy od celu. Sieć Boost i wielowątkowość bibliotek to prawdopodobnie dobry początek.
między std :: string, std :: stringstream i getline (std :: istream &, std :: string &) powinieneś być całkiem niezły. C++ ma całą masę wbudowanej funkcjonalności, ale nie jest zbyt rozbudowany/ogromny/niemożliwy do nauczenia. Skorzystaj z tego. Całe przetwarzanie jest już wbudowane.
Polecam również skuteczne C++ i skuteczne stl od razu. – Rick
Uwielbiam cytat, jaki mają o tej książce: "Każdy, kto czyta tylko tę jedną książkę i pracuje nad przykładami i ćwiczeniami, będzie miał te same umiejętności, co wielu profesjonalnych programistów". Niestety, to nie mówi wiele. :-) – Ken