一、C字符串
c字符串是char类型的数组。char str[MAX]
1.在c++中并没有内置的机制保证程序不会出现数组元素个数超出数组大小的情况。
cout<<setw(MAX)<<str; setw指定输入缓冲区允许的最大字符个数,用户即使输入了过多的字符,<<运算符也不会把他放到数组中。
2.cin.get():来读取包含空格的文本。这样的语法表示stream类的成员函数get(),而cin是这个类的对象。
cin.get()的第一个参数是存放输入字符串的数组地址;
第二个参数是指定了数组的最大尺寸,因此自动防止了缓冲区超出限制。
第三个参数是可以携带一个字符,告诉函数遇到后就停止读取,默认是换行字符(\n)。
strlen():得到c字符串的长度,头文件cstring;
strcpy(destination,source):复制字符串。
strcat():这个库函数将第二个参数的字符串加到第一个参数的字符串之后。
3.字符串数组:stringarray[ ][ ]
例如 star[DAYS][MAX]={“sunday”,”monday”,”tuesday”,”wendnesday”,”thursday”,”friday”,”saturday”};
这个数组的第一维DAYS表示数组中有多少个字符串;第二维MAX指定字符串的最大长度。
访问一个具体字符串的语法为:star[j]----只有第一维的下标。
注意:
1)MAX的定义是非比寻常的。如果要与封装的思想保持一致,则定义完全在类中使用的常量是最好的,因此为了达到这个目的使用全局变量是不恰当的。标准的C++可以在类中声明MAX: static const int MAX =10 ;有些编译器不支持,可以表示为:enum {MAX=10};
2)堆栈,内存是向下增长的,因此栈顶在低端,单元以相反的顺序从堆栈中弹出:先进后出,后进先出。
二、标准的C++string类
string类在很多地方改动了c字符串。首先,在创建数组时不必再为它的大小是否能够容纳字符串变量而担心,因为string类接管了所有的内存管理任务。其次,string类允许使用重载运算符,因此可以使用(+、=、==、<、>)等运算符操作字符串对象:s3=s1+s2;
1.string对象的定义:
1)string s(“man”); 2)string s=”man”; 3)string s;(空的string变量)
2.常用的成员函数(限所看书中用法):
1) swap():它的功能是将两个字符串对象的值做调换,一个对象调用它,另一个对象作为它的参数。如 s1.swap(s2);
2)getline():在string类中它能够读取带有空格的多行输入。
getline()的第一个参数是流对象,这里将会出现输入信息,在此处是cin。
第二个参数是放置文本的string对象obj;
第三个参数是指定终止输入的字符,默认为换行符”\n“.
getline()与c字符串的函数get()是相似的,只是前者是string标准。
3)find():在调用它的字符串对象中查找作为参数的字符串,(最左边的字符位置的编号是0)。
find_frist_of():查找所有的字符组,并且返回他找到的第一个字符的位置。如:find_frist_of(“spde”)为查找这些字符”s“、”p“、”d“、”e“中在字符串中第一个出现的字符,并且返回该字符所在的值。
find_frist_not_of():查找第一个不属于所给出的字符组的字符,并返回该字符的位置。
4)erase():将子串从字符串中移除。
第一个参数:子串第一个字符所在的位置。
第二个参数:子串的长度。
5)replace():用一个字符串替换另一个字符串。
第一个参数:置换部分的起始位置;
第二个参数:要替代的原来字符串的字符个数;
第三个参数:用来替换的字符串。
6)insert():将第二个参数指定的字符串插到第一个参数提供的位置。
7)append():在句尾添加字符(’’),不是字符串。
第一个参数:要添加的字符个数;
第二个参数:要添加的字符。
8)compare():两个对象做比较,返回int类型数值(-1,0,1)。如 a.compare(0,2,b,0,2)
第一个参数:调用函数的对象字符串中开始的位置(0)
第二个参数:调用字符串比较的字符个数(2)
第三个参数:要比较的字符串(b)
第四个参数:b中的开始位置(0)
第五个参数:b字符串中要比较的字符个数(2)
9)substr():返回调用它的字符串的子串。
第一个参数:开始字符位置
第二个参数:返回字符的个数
10)at():类似于[]来从对象中取出单独的字符。参数为字符串中字符的位置。
*11)copy:将string对象复制为char类型的数组。实际上把string类编程c字符串。但记住:复制之后需要将一个空字符(’\0’)插入最后一个字符之后,char[lengeh]=0或char[length]=’\0’;
对比:在string类中:=相当于c字符串中的复制的作用,而copy是将string对象复制为char类型的数组。
12)length和size作用一样,都是返回字符串的长度。(size为适应STL而产生)
相关推荐
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos); 其中strSub是需要寻找的子字符串,npos为查找起始位置。找到返回子...
字符串数组转换成string类型的
json 字符串转成c++类对象,json 字符串转成c++类对象
详解C++中十六进制字符串转数字(数值) 主要有两个方法,其实都是对现有函数的使用: 方法1: sscanf() 函数名: sscanf 功 能: 从字符串格式化输入 用 法: int sscanf(char *string, char *format[,...
C++自定义string字符串类,包含字符串的常用操作以及IO流操作
写的用于扩展C++中的字符串类的一个类,使用了vs,主要是为字符串操作增加如Java中的那些方法
本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下: 我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。 一、用strtok函数进行字符串分割 原型: char *...
各种 C++ 字符串类型转换(char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String) 本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_...
使用指针和for循环来比较两个字符串大小 ,字符串即为一个字符数组
C++字符串完全指引之一 Win32 字符编码 C++字符串完全指引之二 字符串封装类 详细介绍了c++字符编码和字符串相关类
16进制与字符串、字节数组之间的转换 16进制与字符串、字节数组之间的转换
字符串大小写转换的2种方法C++,对任意输入的字符串可实现字符串大小写的转换。
将输入的字符串解析为16进制输出
C语言字符串函数大全C/C++基础 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) ...
C++实现字符串匹配函数,匹配中可以包括通配符
C++的一般编译器都定义和封装了字符串功能,请模仿定义string类的实现,可以实现并支持如下功能: (1)string s = “rubbish大学”; (2)string t = s; (3)string m; m = t; (4)m.legnth() 函数测量字符串...
Base64转String字符串,支持将Base64转化为String字符串
在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...
一个又C++实现的字符类重写,是老师留得作业,但是内容充实,可以广泛扩展,同时实现了类的重载,定义,以及组合等内容
详解C++的String类的字符串分割实现 功能需求,输入一个字符串“1-2-3”切割出“1”、“2”、“3”。在Java下直接用String的split函数就可以了。c++下String没有直接提供这个函数,需要自己写。 网上给出的解决方案...