はじめまして、Akkiといいます。
本日よりC++の勉強を始めたのですがいきなりつまづいてしまいました。
内容的には以下のようなコードでごく簡単な事をしているのですがコンパイルできないのです。
#include <iostream.h>
#include <string.h>
int main(void){
int a, b;
double f;
char c;
string s;
a = 20;
b = 3;
f = 3.1415926;
c = 'a';
s = We can do it!;
cout << 整数 a: << a << endl;
cout << 整数 b: << b << endl;
cout << 浮動小数点 f: << f << endl;
cout << 文字 c: << c << endl;
cout << 文字列 s: << s << endl;
return 0;
}
ソースは問題ないと思うのですが、コンパイルエラーで
『error C2065: 'string' : 定義されていない識別子です。』
といわれてしまいます。
原因のわかる方どうか助けて下さい・・・・(T_T)
環境はVC++6.0 SP5を使用しています。
すいません、書き忘れました。
WinNT4.0
VC++6.0 SP5
IE5.5
えっと
#include <string>
int main()
{
std::string str;
}
あるいは
#include <string>
using namespace std;
int main()
{
string str;
}
のようにやってみて下さい。
>toruさん
ありがとうございます。
stringの定義はできました♪
ですが、#includeする時にの書き方は<string.h>ではなく<string>だけで良いんですか?
あと、『using namespace std;』これは一体なんのおまじないなのか・・・・(--;
もう一つ、string型はcoutで出力はできないのでしょうか??
なんか質問ばかりですいません・・・・。
VC++に標準で付いてるSTLはたいてい.h無しで定義されています。
using namespace std;
ってのは簡単に説明すると
namespace A
{
class C
{
...
};
};
namespace B
{
class C
{
...
};
}
このコード上にclass Cが2つありますがこれは競合しません。
それぞれ
A::C
B::C
という風にアクセスします。
それで
using namespace A;
とすると
C
と書いただけで暗黙に
A::C
の方になります。
それと、coutでは出力でします。
えっと本気で説明すると長くなるんであとはMSDNを見て下さい。
>VC++に標準で付いてるSTLはたいてい.h無しで定義されています。
というか,標準C++のヘッダファイルは全て.hがついていません。
std::iostreamは<iostream>ですし,std::printfは<cstdio>です。
尤も,VC++は準拠が甘いため,<cstdio>にstd::printfでなく::printfがありますが。
yvals.hってのがありますが。VC++の独自拡張だと思いますが
無いとまずいわけですし。STLの一部と言っても良いような気がします。
yvals.hは内部で使っているだけのヘッダファイルですよね。
実装上の問題であって,本来無くても良いファイルです。
なので,STLの一部とは言えないでしょう。