<string>
私は C++ の学習を開始し、文字列型がコンパイラに直接組み込まれていないため、ヘッダー ファイルを使用する必要があると書かれている本を読みました。を使用する<iostream>
と、文字列型を使用できます。
<string>
ヘッダーを含めた場合、文字列型を使用したい場合、ヘッダーを含める必要があり<iostream>
ますか? なんで?何か違いはありますか?
はい、使用するものを含める必要があります。標準ヘッダーに相互に含めることは義務付けられていません (いくつかの例外 IIRC を除く)。現在は機能するかもしれませんが、別のコンパイラでは失敗する可能性があります。
あなたの場合、直接的または間接的に<iostream>
含ま<string>
れているようですが、それに依存しないでください。
<string>
ヘッダーを含めた場合、文字列型を使用したい場合、ヘッダーを含める必要があり<iostream>
ますか?
はい、そうしなければなりません。<string>
関連するヘッダー (例: ) が#include
他のヘッダー (例: ) を介して間接的に dされることに依存することはできません<iostream>
が、これは一部の実装では当てはまります。
また、これが機能しているように見える場合でも、一部の演算子の関連するオーバーロードのすべてがインポートされていない場合、またはクラスがヘッダーで前方宣言されている場合に問題が発生する可能性がありますが#include
、そのクラスに関する情報は他のものから派生していますclass は、 #include
dを取得しないヘッダーにのみ含まれています。
たとえば、このような状況の例については、StackOverflow に関するこの Q&A を参照してください。