私はさまざまなフォーラムの周りをホバリングしてきましたが、このポップアップが毎回表示されるようです。それは非常に初心者の質問です。
私は通常、プログラムを次のように定義します
#include<string>
using namespace std;
string x;
文字列を次のように定義する多数のコードサンプルがあります。
std::string.
これの目的は何ですか?それは良い習慣ですか、いくつかの機能がありますか?
すでに述べたように、std
名前空間全体またはstd::
をインポートしない限り、std::string
を使用する必要があります(以下を参照)。
私の意見では、string
の代わりにstd::string
を使用したほうが、他の文字列実装ではなくstd::string
であることが明示的に示されているため、より良いと思います。
ただし、string
のみを記述する場合は、using std::string;
の代わりにusing namespace std;
を使用して、実際に必要なグローバル名前空間にのみインポートすることをお勧めします。
string
のフルネームはstd::string
です。これは、namespace std
(すべてのC++標準ライブラリ関数、クラス、およびオブジェクトが存在する名前空間)に存在するためです。
コードでは、using namespace std;
という行を明示的に追加しました。これにより、std::
プレフィックスを使用せずに、標準の名前空間のすべてを使用できます。したがって、コンパイラはstd::string
を探すことを知っているので、string
の短縮形を使用してnamespace std
(文字列型の実際の名前)を参照できます。
string
とstd::string
は同じタイプであるため、機能上の違いはありません。ただし、string
よりもstd::string
を好む場合があります。たとえば、ヘッダーファイルでは、そのヘッダーを含むファイルの名前があいまいになる可能性があるため、行using namespace std;
を配置する(または、名前空間を使用する)ことは一般に良い考えとは見なされません。この設定では、ヘッダーで#include <string>
だけを実行し、std::string
を使用して文字列型を参照します。同様に、std::string
と他のstring
型の間にあいまいさがあった場合、std::string
という名前を使用するとあいまいさがなくなります。
行using namespace std;
を含めるかどうかは、やや議論のあるトピックであり、多くのプログラマーはこれに強く反対しています。大規模なプロジェクトで作業するときは、使い慣れたものを使用し、使用されているコーディング規則を採用することをお勧めします。
ssteinberg が言ったように、それは同じです。しかし、構文的にのみ。
私の経験から、フルネームを使用する方が便利です
std::string
必要な場所、または明示的な
using std::string;
ソースファイルの先頭。
利点は、この方法でソースファイルの依存関係がより観察できることです。追加する場合
using namespace std;
つまり、コードはその名前空間内のあらゆるものに依存する可能性があります。
using
namespace std
でない場合は、std::string
を使用して、どのネームスペース文字列が属するかを指定する必要があります
あなたが持っている場合 using namespace std;
コードの前は同じです。