Posted on 2007-08-03 13:01
寶杉 閱讀(413)
評論(0) 編輯 收藏 引用 所屬分類:
C++
錯誤:
#include <iostream.h>
#include <string.h>
……
string st("test string");
……
error C2065: 'string' : undeclared identifier
解釋:
#include <string>
using namespace std;
因為在 using namespace std; 情況下,
#include <string> 是使用 C++ string 類庫;
#include <cstring> 是使用 C 的string 操作庫函數 ...
細節 加不加“.h”
#include <iostream.h>
#include <string>
using namespace std;
沒有錯!!
而
#include <iostream.h>
#include <string.h>
using namespace std;
編譯有錯!!
解釋
“string.h“這個頭文件是“舊式c頭文件”,而這個文件中沒有定義string類(這點應該不奇怪,c語言中哪有什么類啊),這個頭文件里面是有關“舊式char-based字符串”的操作函數,注意都是操作char*字符串的“函數”,所以你引用這個頭文件,編譯器肯定找不到“string”了。
“string”這個頭文件(沒有擴展名)是C++標準化之后的C++頭文件,里面才有string類的相關定義(其實,string并不是類,是一個typedef,但是使用的時候不用去管他),而C++標準頭文件中的東西都放在namespace std中了,所以使用的時候要“using namespace std”。
附:建議樓主不要用"iostream.h",改成“iostream”吧,因為標準已經明確規定不在支持"iostream.h"這種頭文件了。
標準寫法
#include <iostream>
#include <string>
using namespace std;
F: 為什么using namespace std;
要寫在include后面?
Q: 因為include的文件包含名字域std
如果你把using namespace std寫在前面,編譯器就看不到std這個名字