文字列を使用するには、その実装が利用できるように文字列ヘッダーを含める必要があります。しかし、そうであれば、なぜ私はまだusing std::string
行を追加する必要がありますか?#includeの後にstd :: stringを使用するのはなぜですか?<string>?
なぜ文字列データ型について知っているのですか?
#include <string>
using std::string;
int main() {
string s1;
}
文字列を使用するには、その実装が利用できるように文字列ヘッダーを含める必要があります。しかし、そうであれば、なぜ私はまだusing std::string
行を追加する必要がありますか?#includeの後にstd :: stringを使用するのはなぜですか?<string>?
なぜ文字列データ型について知っているのですか?
#include <string>
using std::string;
int main() {
string s1;
}
string
がstd
と呼ばれる名前空間内で定義されているので。
<string>
が含まれていますが、using std::string
を追加することができますし、(そうstd::string
がstring
ようにrefferedされる可能性があります)スコープで名前空間を使用していないところどこでもstd::string
を書くことができます。あなたは、関数の内部で、たとえば、それを配置することができますし、それだけでその機能に適用されます。
#include <string>
void foo() {
using std::string;
string a; //OK
}
void bar() {
std::string b; //OK
string c; //ERROR: identifier "string" is undefined
}
Namespace
は、変数、関数やオブジェクトの範囲を定義し、名前の衝突を回避されるC++の追加機能です。 。ここでは、string
オブジェクトはstd
名前空間で定義されています。
std
は標準名前空間です。 cout
,cin
,などがあり、他にも多くのことが定義されています。
ヘッダー<string>
は、文字列ライブラリに関連するさまざまなエンティティを宣言しますが、名前空間は関連する機能をグループ化し、異なる名前空間で同じ名前を使用することができます。
クラスstring
の宣言が名前空間stdにあるためです。したがって、あなたはいつもstd :: string経由でアクセスする必要があります(使用する必要はありません)。
using std::string;
このタイプを使用できるわけではありませんが、タイプの名前の前にネームスペースstd::
を指定しなくてもこのタイプを使用できます。
次のコードは正しいです:
#include <string>
int main()
{
std::string s1;
return 0;
}
直接 –
名前空間stdと使用文字列を使用して線を入れて、その悪い習慣はありませんか?私は、必要なものに対してのみ '使用する 'ことを試みます。 – vanmarcke
@vanmarckeこれは悪い習慣であり、正しく使用しています。 – mpiatek