C/C++学习笔记(十一)string和string.h文件的区别

在C/C++学习笔记(六)中记录了头文件和源文件的探讨,本文将继续探讨更多的相关知识。

#include <>和#include “”的区别

当我们使用#include <文件名>命令时,编译器就到这个文件夹里去找对应的文件。显然,用这种写法去包含一个我们自己编写的头文件(不在那个Include文件夹里)就会出错了。所以包含C++提供的头文件时,应该使用尖括号。
#include "文件名"命令则是先在当前文件所在的目录搜索是否有符合的文件,如果没有再到Include文件夹里去找对应的文件。因此,无论这个文件是C++提供的还是自己编写的,使用#include "文件名"命令一定是正确的。


.h文件

.h文件是c中的文件,包括了操作C风格字符串的函数,如strcpy.strcmp,strcat,strlen等。C 语言里没有字符串这个数据类型,有的只是字符指针或字符数组,C风格字符串也就是以'\0'结尾的字符序列。如下实例:

#include "stdafx.h"
#include <stdio.h>
#include <string.h>


int _tmain(int argc, _TCHAR* argv[]) {
	char d[20]="Golden Global";
	char *s=" View";
	strcat(d,s);
	printf("%s\n",d);
	getchar();
	return 0;  
}

新标准库文件

一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。所以<string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;<string>
是包装了std C++头文件,对应的是新的string 类(看下文)。所以c++中可以用<string.h>也可以用<string>,而c中只能用<string.h>,一般说要用strcpy.strcmp,strcat,strlen之类的函数应该include <string.h>,要使用上一博文中介绍的string类应该include <string.h>,但是貌似<string>中已经有了include <string.h>,所以实际中只需要include <string.h>,如下面实例:

#include "stdafx.h"
#include <string>
using namespace std ; 

int _tmain(int argc, _TCHAR* argv[]) {
	char d[20]="Golden Global";
	char *s=" View";
	string s1="hello";
	strcat(d,s);
	//strcat(s2,s);//此处报错
	printf("%s\n",d);
	getchar();
	return 0;  
}

c前缀文件

在C++标准化之前,头文件有各种后缀名,如.h,.hpp,.hxx等,标准化之后规定头文件不带后缀名,同时原来的C标准头文件都在前面加了个"c",于是原来C里的string.h,在C++里就变成了cstring,同样的stdio.h,stdlib.h之类的都变成了cstdio、cstdlib一类。为了兼容C,大部分C++编译器都同时提供了这两个版本的头文件,可以认为string.h和ctring是一回事,你可以看一下你的编译器里include目录下的这两个文件,cstring只是简单的include了string.h而已。


你可能感兴趣的:(c,使用,Visual,Studio,CC++学习)