• 締切済み

stringクラスのオブジェクト

C++にて下記のソースをVC++にてコンパイルすると「'string'定義させていない識別子です。」などどエラーがでてしまいます。BC++では何も問題ないのですが・・・。なぜなのでしょうか? #include <iostream.h> #include <string.h> void main(){ string s; cout << "貴方の名前は?" <<endl; cin >> s; cout << s <<"さん、こんにちは"<<endl; }

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

> ご指摘の通りインクルードをしましたがwarnig C4530~というエラーが先のエラーと一緒にバーっとたくさんでてきてしまいます。 せっかくメッセージが出ているのだから、その内容を読んでみましょう。 -GX オプションを使え、と出ていますよね。

すると、全ての回答が全文表示されます。
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

ふたつのインクルードを以下のようにしてください #include <iostream> #include <string> > VC++のコンパイラって古いのですか? いえ、古い(とは、一概に言えないんですが)のは BC++ の方です。 string クラスが標準ライブラリに入ってきたのは、ANSI 以後ですが、ANSI の 規格では、c++ のインクルードファイルは、末尾の .h がつきません。 string.h は、C の文字列関数に絡むインクルードファイルで、その中に string クラスが入っている BC++ の方が変です。

deia
質問者

お礼

お礼というより補足になるのですが、先ほどご指摘の通り記述してVC++6.0上で試したところ、正常に表示されました。 がコマンド プロンプト上で「cl ファイル名.cpp」とコンパイルしようとすると先ほど言ったようなエラーでます。 コマンドプロンプト上ではコンパイルできないのでしょうか? 筋違いな質問ばかりしてすいません。

deia
質問者

補足

再び回答ありがとうございます。 ご指摘の通りインクルードをしましたがwarnig C4530~というエラーが先のエラーと一緒にバーっとたくさんでてきてしまいます。 ん~!分かりません。こんがらがってきてます。

すると、全ての回答が全文表示されます。
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

using namespace std; の一行を main() の前に入れてください。 因みに、void main() でコンパイルが通りますか? C++ は、型にうるさい言語です。int main() としておいて、最後に return 0; しましょう。

deia
質問者

補足

回答ありがとうございます。 using namespace std; を追加しても「'std':存在しないか名前空間ではありません。」と先のエラーに加えて表示されます。 int main()にしても同じです。 私が参考にしている本には質問欄に書いたとおりの記述がしてあります。 ちなみにBC++の場合はいずれの場合も問題なくコンパイルできます。 VC++でコンパイルする時のみこれらのエラーがでます。 VC++のコンパイラって古いのですか? ちなみにVC++6.0です。

すると、全ての回答が全文表示されます。

関連するQ&A