Devo usare #include accanto a ?

Ho iniziato ad imparare C ++ e ho letto un libro che scrive che devo usare il file di intestazione perché il tipo di stringa non è compilato direttamente nel compilatore. Se uso posso usare il tipo di stringa.

Devo includere l’intestazione quando voglio usare il tipo di stringa se ho incluso l’intestazione ? Perché? C’è qualche differenza?

Sì, devi includere ciò che usi. Non è obbligatorio che le intestazioni standard si includano l’un l’altra (con alcune eccezioni IIRC). Potrebbe funzionare ora, ma potrebbe non riuscire su un compilatore diverso.

Nel tuo caso, apparentemente include , direttamente o indirettamente, ma non fare affidamento su di esso.

Devo includere l’intestazione quando voglio usare il tipo di stringa se ho incluso l’intestazione ?

Sì, devi. Non si può fare affidamento su intestazioni rilevanti (es. ) che #include d indirettamente attraverso altre intestazioni (ad esempio ), anche se questo potrebbe essere il caso di alcune implementazioni.

E anche quando questo sembra funzionare, potrebbe portare a problemi se non vengono importati tutti i sovraccarichi rilevanti di alcuni operatori, o se una class viene dichiarata in avanti in un’intestazione, ma #include informazioni su quella class derivata da qualche altra class è contenuta solo in un’intestazione che non ottiene #include d.

Vedi, per esempio, questa domanda e risposta su StackOverflow per un esempio di tali situazioni.