您的位置:首页 > 编程语言 > C语言/C++

c++练习中遇到的问题和解决

2013-11-02 14:31 281 查看
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工具来进行编译
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 编译