Zacząłem uczyć się C++ i czytałem książkę, która pisze, że muszę użyć pliku nagłówkowego <string>
, ponieważ typ łańcucha nie jest wbudowany bezpośrednio w kompilator. Jeśli korzystam z <iostream>
, mogę użyć typu ciągu.Czy muszę używać #include <string> obok <iostream>?
Czy muszę dołączyć nagłówek <string>
, gdy chcę użyć typu ciągu, jeśli zawarłem nagłówek <iostream>
? Czemu? Czy jest jakaś różnica?
Prawdopodobnie jest to forwardowa deklaracja ciągu znaków ( zawiera , która obejmuje implementację gcc). Myślę, że to standardowe zachowanie (musiałby jednak sprawdzić standard), więc wierzę, że może na nim polegać, gdy nie potrzebuje pełnego typu. –
Aleph
@AnotherTest "Mogę użyć typu ciąg" - mówi mi, że potrzebuje pełnego typu. Jeśli tego nie zrobi, to zgodziłaby się taka deklaracja. –
27.5.1 stwierdza, że musi zawierać . To wymaga tylko 'char_traits', więc nie jestem pewien, czy kompilator musi również przekazywać dalej deklarację' string'. Wciąż wątpię, że jakakolwiek implementacja iostream zawiera cały nagłówek łańcucha. –
Aleph