c++ #include 包含头文件带 .h 和不带 .h 的区别

c++ #include 包含头文件带 .h 和不带 .h 的区别

写c++程序的时候,使用 #include <string> 的时候,使用函数前要用
using namespace std; 导入命名空间。
因为c++增加了名称空间概念,将原来声明在全局空间下的标识符声明在了namespace std下。

#include <string>

using namespace std;

void main()
{
    string user = "jiangzhihao";
    printf("looking for jiang from jiangzhihao %s\n", (strcmp(user.c_str(), "jiang")) ? "found" : "not found");

    string a = "aaaa";
    const char* ch_a = a.c_str();
    printf(ch_a);
    printf("\n");

    string b = "bbbb";
    const char* ch_b = b.data();
    printf(ch_b);
    printf("\n");

    //c_str()和data()有什么区别呢?
    //c_str()会在数据的末尾添加'\0'结束符,多数用于使用字符串场合。
    //而data()函数不会添加'\0'结束符。
}

也就是说带 .h 的头文件是旧标准的,如果想用新的标准的头文件就不要带 .h。
另外,为了和c语言兼容,c++标准化过程中,原有c语言头文件标准化后,头文件名前带个
c字母,如cstdio、cstring、ctime、ctype等。

其他:
<*.h>  表示优先从系统目录中查找该头文件,比如 #include 这是系统中的。
“*.h”    表示优先从当前目录中查找该头文件,比如 #include “head.h” 这是自己写的。

发表回复

您的电子邮箱地址不会被公开。