C++にて下記のソースをVC++にてコンパイルすると「'string'定義させていない識別子です。」などどエラーがでてしまいます。BC++では何も問題ないのですが・・・。なぜなのでしょうか?

#include <iostream.h>
#include <string.h>

void main(){
string s;
cout << "貴方の名前は?" <<endl;
cin >> s;
cout << s <<"さん、こんにちは"<<endl;
}

A 回答 (3件)

> ご指摘の通りインクルードをしましたがwarnig C4530~というエラーが先のエラーと一緒にバーっとたくさんでてきてしまいます。



せっかくメッセージが出ているのだから、その内容を読んでみましょう。
-GX オプションを使え、と出ていますよね。
    • good
    • 0

ふたつのインクルードを以下のようにしてください



#include <iostream>
#include <string>

> VC++のコンパイラって古いのですか?

いえ、古い(とは、一概に言えないんですが)のは BC++ の方です。

string クラスが標準ライブラリに入ってきたのは、ANSI 以後ですが、ANSI の
規格では、c++ のインクルードファイルは、末尾の .h がつきません。

string.h は、C の文字列関数に絡むインクルードファイルで、その中に
string クラスが入っている BC++ の方が変です。

この回答への補足

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

補足日時:2001/12/13 20:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/13 20:57

using namespace std;



の一行を main() の前に入れてください。

因みに、void main() でコンパイルが通りますか?
C++ は、型にうるさい言語です。int main() としておいて、最後に return 0; しましょう。

この回答への補足

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

補足日時:2001/12/13 19:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ