0
#include <string.h>
using namespace std;
namespace charcount 
{
    int ShowPerCent();
    int PerCent();
    int Values(char letter);
    int analize(string var);
}

このコードはすべて、私のプロジェクトの「functions.h」の一部です。これは言う:

functions.h: 7:13: error: 'string' was not declared in this scope

そして、なぜこれがそう言うのか理解できません。私は試してみてstd::string、いいえ。何が起こるか知っている人はいますか?さらに追加情報が必要な場合は、お尋ねください。

4

2 に答える 2

5

正しいヘッダーは<string>. include ディレクティブを次のように変更します。

#include <string>

C++ 標準ライブラリヘッダー..h

using namespace std;特にヘッダーファイルでを行うのは非常に悪い習慣と考えられています。これにより、名前空間からの名前でグローバル名前空間がstd汚染され、その汚染がそれを含むすべてのファイルに伝播されます。

于 2013-04-08T15:33:19.080 に答える
2

Cでは、

#include <string.h>

C 文字列ヘッダー (strlen()などstrcmp()) を提供します。

C++ では、

#include <string.h>

は非推奨ですが、同じ C 文字列ヘッダーを提供します。使用することをお勧めします

#include <cstring>

代わりに、同じ機能をstd::名前空間 (それらが属する場所) で提供します。

std::stringオブジェクト指向の自動割り当て自動拡張 C++ の優れた機能が必要な場合は、次のようにする必要があります。

#include <string>

特にと組み合わせて使用​​しないでusing namespaceください。アイデアは、特定の識別子がどの名前空間に由来するかを明示することです。std::

編集:私よりも速く入力した sftrabbit を出向させます。using namespace.cpp ファイルでは許されるかもしれませんが、ヘッダーでは、名前空間を変更したために、ヘッダーを含めると完全に有効な C++ コードが突然無効になる可能性があるため、重大な犯罪です。

于 2013-04-08T15:38:56.280 に答える