当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++语言基本-字串操纵函数

C++语言基本-字串操纵函数

2017-11-07 08:00 星期二 所属: C语言/C++ 教程 浏览:726

假如你用过具有string数据范例的编程语言,你大概很不习惯,别人也有同感,所以尺度C语言库中提供了几个字串操纵函数。表1.3列出了最常用的字串操纵函数及其用法说明。关于每个函数的具体说明和实例,见C++ Builder联机辅佐。
表1.3字串操纵函数
函数 说明
strcat() 将字串接合到方针字串的末端
strcmp() 较量两个字串是否相等
strcmpi() 较量两个字串是否相等,不思量巨细写
strcpy() 将字串内容复制到方针字串中
strstr() 扫描字串中第一个呈现的字串
strlen() 返回字串长度
strupr() 将字串中的所有字符酿成大写
sprintf() 按照几个参数成立字串
说明 这里先容的字串操纵是C语言中的字串处理惩罚要领。大大都C++编译器提供了cstring类,可以简化字串的处理惩罚(C++ Builder的Visual构件库中有个AnsiString类,可以处理惩罚字串操纵。C++ Builder联机辅佐中具体先容了AnsiString类)。尽量C语言中的字串处理惩罚要领较量贫苦,但并不外时,C++编程人员常常在利用cstring类和AnsiString类等字串类的同时利用C语言中的字串处理惩罚要领。这里不想对表中的每个函数举办举例说明,只想举两个最常用的函数。strcpy()函数将一个字串复制到另一字串中,源字串可以是变量或直接字串。譬喻下列代码:
//set up a string to hold 29 characters
char buff[30];
//copy a string literal to the buffer
strcpy (buff,"This is a test.");//display it
cout << buff << end;
//initialize a second string buffer
char buff2[]="A second string.";
//copy the contents of this string to the first buffer
strcpy (buff,buff2);
cout << buff << end1;
字符数组中比数字数组中更容易重载数字末端。譬喻下列代码:
char buff[10]= "A string";// later….
strcpy(buff,"This is a test."); //oops!
这里成立了放10个字符的字符数组,最初指定需要9个字节的字符串(记着终止null)。厥后大概健忘了数组长度,将需要16个字节的字串复制到了缓冲区,对数组重载了六个字节。这个小小错误就擦去了某个内存位置上的六个字节。所以将数据复制到字符数组中时要出格小心。另一个常用的字串函数是sprintf()。这个函数可以殽杂文本和数字成立名目化字串。下面例子将两个数相加,然后用sprintf()成立字串以陈诉功效:
char buff[20];
int x = 10 * 20;
sprintf(buff,"The result is: %d",x);
cout << buff;
执行这个码段时,措施显示下列功效:The result is:200
本例中%d汇报sprintf()函数此处有个整型值,名目字串末端插入变量x,汇报sprintf()在字串的这个位置放上变量x的值。sprintf()是个出格的函数,可以取多个变元。你必需提供方针缓冲区和名目字串,但名目字串后头的变元数是个变量。下面的sprintf()例子用了别的三个变元:
int x = 20;
int y = 5;
sprintf(buff, "%d + %d", x, y, x + y);
cout << buff;
执行这个码段时,屏幕上显示的功效如下:20 + 5 = 25
说明 C++字串中的单斜杠暗示非凡字符。譬喻,’\n’暗示新行符,’\t’暗示跳表符。为了在字串中放上实际的斜杠,要用双斜杠如下:
strcpy(fileName, "c:\\windows\\system\\win.ini");
很多编程人员因为忘了这个简朴的事实而夜不能寐,苦苦折腾。这是个常见的错误,别说我没有汇报你。sprintf()有个兄弟叫wsprintf(),是Windows版的sprintf().Windows措施中大概同时用这两个函数。wsprintf()与sprintf()的浸染相似,独一的不同是不能在名目字串中放上浮点数。C++ Builder措施中两个函数均可利用,但用sprintf()更好,因为它完全支持浮点数(还可以少输入一个字符)。关于sprintf()的进一步先容,见C++ Builder联机辅佐。

字串数组不只可以有字符数组,还可以有字符数组的数组(即字串数组)。这听起来有点巨大,其实前面的Argstest措施中已经用过。这类数组可以分派如下:
char strings[][20] = {
"This is string 1",
"This is string 2",
"This is string 3",
"This is string 4"};
这个代码生成四个字串的数组,每个字串最多放19个字符。尽量可以利用这种字串数组,但C++ Builder中尚有更简朴的字串数组处理惩罚步伐(将在后头先容C++ Builder时先容)。说明 假如常常用到字串数组,该当看看尺度模板库(STL).STL提供了比用C语言式字符数组更利便地存放和操纵字串数组的要领.STL中尚有个string类。

 

    关键字:

天才代写-代写联系方式