C\C++关于string.h头文件和string类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C\C++关于string.h头文件和string类相关的知识,希望对你有一定的参考价值。
学习C语言时,用字符串的函数例如stpcpy()、strcat()、strcmp()等,要包含头文件string.h
学习C++后,C++有字符串的标准类string,string类也有很多方法,用string类时要用到string.h头文件。
我现在很迷惑,这两个 string.h有什么区别。是怎么回事
我现在看vc的书上也有CString类,这个要包含什么,怎么用?
谢谢!
我还没见过#include<cstring>
turbo c 3.0里我要用c++的string标准类应包含什么头文件
为什么?
turbo c 3.0 里C++使用string.h 包含的是C语言的string.h
而不是 C++的string.h 为什么?
在C++环境包含C的string不是用cstring.h吗?
为什么tc 3.0不是这样呢 ?
C的字符串头文件是<string.h>,在C++里这个文件变成了<cstring>,string前面的c表示这个是c语言的;而C++的字符串头文件是<string>,是利用的模板实现的,跟原先C的实现方法不一样,但要安全得多。
VC++中有<string.h>文件,它就是C中的那个;
而<cstring>文件实际上只是在一个命名空间std中include了<string.h>,这是因为C++要减少名称污染;
所以两个都是可以用的,但C++鼓励用<cstring>。
<string>为字符串实现了一个类,而其实是依靠模板做的,这个可以先不考虑。使用类,可以将问题局部化,类似于把一个大问题分解成一个个小问题;而且类是具有类型安全的。
所以最好最好用C++的类。
参考技术A
string.h头文件是用于C程序的。C++用来处理旧的C风格字符串,但一般用等价的头文件cstring。
string头文件中包含标准库类型string的定义,是在C++中处理字符串的一般方法。
在安全性上,string类比C风格的字符串要好的多,一般也比较易用。
补充:TC 3.0是一个很古老的C++编程环境(90年代初),由于C++的标准到1998年才公布,所以一些正确的程序在TC上是运行不了的,比如cstring这样的头文件。
最好的解决方案是抛弃TC,因为实际应用中已经没有人用这个十多年前的古董了。使用VC 6.0以后的版本、BCB较新的版本,或者开源的编程环境如Dev-C++(这个免费)。
参考技术B
你可以用标准的string,也可以用CString。如果没什么必要还是用string吧。
之所以有CString,那是历史原因。CString诞生的时候,C++标准还没出来。
--问题补充:为什么Turbo C++ 3.0却不可以用string呢?
--tc 3可以编c++的啊,怎么连string都用不了?
C++标准是98年出来的。tc3是98年以前出来的,所以你应该用新点的编译器。用VC2005,这个比较符合标准本回答被提问者和网友采纳
参考技术C
这两个一个是标准C库的,定义了一些字符串的处理函数.一个是标准C++库的,定义了标准C++的std::string类.
要用这个类要包含头文件<string>...如下;
#include <string>
using namespace std;//关于名字空间有兴趣自己查去,一般用标准库这句就行了
当然标准C库也是标准C++库的一部分,要用标准C库里的处理函数...如下:
#include <string.h>//所以你用这句包含的自是标C的头文件
...或者用如下C++风格的,它们是等价的,不过比较推荐:
#include <cstring>
using namespace std;
CString类是MFC的类,...不搞Windows MFC编程用不到
参考技术D
都是一样的,C++包含了C语言的所有功能,Cstring也就是C语言的类,在程序调用的什么两个都一样。
C/C++的String常用函数介绍
简介
string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
库变量
下面是头文件 string.h 中定义的变量类型:
序号 | 变量 & 描述 |
---|
1 | size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 |
库宏
下面是头文件 string.h 中定义的宏:
序号 | 宏 & 描述 |
---|
1 | NULL 这个宏是一个空指针常量的值。 |
库函数
下面是头文件 string.h 中定义的函数:
序号 | 函数 & 描述 |
---|
1 | void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字符中搜索第一次出现字符 c(一个无符号字符)的位置。 |
2 | int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。 |
3 | void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。 |
4 | void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。 |
5 | void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)覆盖到参数 str 所指向的字符串的前 n 个字符。 |
6 | char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 |
7 | char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 |
8 | char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。 |
9 | int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 |
10 | int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。 |
11 | int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。 |
12 | char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 |
13 | char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 |
14 | size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 |
15 | char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。 |
16 | size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 |
17 | char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。 |
18 | char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 |
19 | size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。 |
20 | char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 |
21 | char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。 |
22 | size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。 |
以上是关于C\C++关于string.h头文件和string类的主要内容,如果未能解决你的问题,请参考以下文章
string.h是啥头文件
C语言头文件,conio.h,windows.h,string.h,math.h各有啥用?
第 16 章 C 预处理器和 C 库(条件编译)
c语言中gets ,getschar 和fgets 的用法及三者之间的差别
C语言里面输入命令的头文件是啥啊
C++中 string 和cstring 头文件 有啥区别????