OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

stringクラスのオブジェクト

  • 困ってます
  • 質問No.184674
  • 閲覧数174
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 56% (69/122)

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

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

void main(){
string s;
cout << "貴方の名前は?" <<endl;
cin >> s;
cout << s <<"さん、こんにちは"<<endl;
}
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

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

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

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

お礼率 56% (69/122)

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

ベストアンサー率 50% (1122/2211)

ふたつのインクルードを以下のようにしてください #include <iostream> #include <string> > VC++のコンパイラって古いのですか? いえ、古い(とは、一概に言えないんですが)のは BC++ の方です。 string クラスが標準ライブラリに入ってきたのは、ANSI 以後ですが、ANSI の 規格では、c++ のイ ...続きを読む
ふたつのインクルードを以下のようにしてください

#include <iostream>
#include <string>

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

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

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

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

お礼率 56% (69/122)

再び回答ありがとうございます。
ご指摘の通りインクルードをしましたがwarnig C4530~というエラーが先のエラーと一緒にバーっとたくさんでてきてしまいます。
ん~!分かりません。こんがらがってきてます。
投稿日時 - 2001-12-13 20:32:04
お礼コメント
deia

お礼率 56% (69/122)

お礼というより補足になるのですが、先ほどご指摘の通り記述してVC++6.0上で試したところ、正常に表示されました。
がコマンド プロンプト上で「cl ファイル名.cpp」とコンパイルしようとすると先ほど言ったようなエラーでます。
コマンドプロンプト上ではコンパイルできないのでしょうか?
筋違いな質問ばかりしてすいません。
投稿日時 - 2001-12-13 20:57:25
  • 回答No.3
レベル14

ベストアンサー率 50% (1122/2211)

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

せっかくメッセージが出ているのだから、その内容を読んでみましょう。
-GX オプションを使え、と出ていますよね。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ