Mam trywialne pytanie. Wiem że dołączanie <string> z biblioteki standardowej umożliwia korzystanie z klasy string. I wiem, że <iostream> umożliwia tworzenie zmiennych typu std::string. Mam zatem dwa pytania, bo nie mogłem się doczytać czy <iostream> zawiera automatycznie <string>, czy może ta cała "sztuczka" polega na czymś innym?
Drugie pytanie to czy dołączenie <iostream> jednocześnie umożliwia korzystanie z wszystkich składników (jak np metody) z klasy string?
No i tak na marginesie, czy znacie jakieś inne (może nie aż takie popularne, ale treściwe) źródła do informacji o C++ - coś na zasadzie dokumentacji - nie licząc cplusplus.com i msdn? Podkreślam, że nie chodzi mi o strony z jakimiś kursami do C++, czy z artykułami, tylko dokumentacje.

- Rejestracja:około 12 lat
- Ostatnio:około 6 lat
- Postów:196

- Rejestracja:ponad 12 lat
- Ostatnio:prawie 5 lat
- Postów:2412
Jak chcesz uzywac std::string
to dolaczaj <string>
po prostu.

- Rejestracja:około 12 lat
- Ostatnio:około 6 lat
- Postów:196
Nie chodzi mi o to. Chodzi mi o to, czy nagłówek <iostream> ma jakieś powiązanie z <string>, skoro dołączając <iostream> można korzystać z klasy std::string.
- Rejestracja:około 18 lat
- Ostatnio:około rok
Śliska sprawa. Standard nie wymaga dołączenia nagłówka string
do iostream
. Natomiast metoda ios_base::getloc
zwraca jako wartość locale
, które ma metodę name
zwracającą nasz string
. Więc musi o nim wiedzieć. Natomiast tutaj sprawa się komplikuje, bo nie musi natomiast znać wszystkiego, co jest w nagłówku string
.
I z tego powodu taki kod się powinien skompilować w GCC, ale nie skompiluje się w MSVC:
#include <iostream>
int main() { std::string foo = "bar"; std::cout << foo; }
Także ogólna zasada jest taka: jeżeli chcesz z czegoś skorzystać i to coś ma swój nagłówek, a standard nie gwarantuje, że dołącza go coś, co już załączyłeś - dołącz ten właściwy!

- Rejestracja:około 12 lat
- Ostatnio:około 6 lat
- Postów:196
Osobiście na samym początku właśnie przypuszczałem, że to dlatego że <iostream> mógł uwzględniać <string>, tak samo jak wiele nagłówków automatycznie dołącza inne. W każdym razie dzięki za pomoc.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.