c++練習中遇到的問題和解決

1. 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"這種頭文件了。


二 .  多文件連編譯的問題

1.一個需要把頭文件條件宏寫上

#ifndef ...
#define ...
....
#endif 


2. 如果你是直接在編譯中把文件添加進去而沒有以添加文件的方式時(此種方式相當於makefile的功能,把幾個文件之間的編譯關係聯繫起來),請用添加工程的方式,在重新創建一個工程,在裏面添加文件的方式,來添加,或者如果你會有make,那麼可以通過查找make/makefile的方式,用make工具來進行編譯


發佈了15 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章