c风格字符串的标准库函数

头文件是<string>

strlen( s )          返回s的长度,不包含字符串结束符null

strcmp( s1, s2 )       比较两个字符串s1和s2是否相同。若s1与s2相等,则返回0;若s1大于s2,返回正数。若s1小于s2,则返回负数

strcat( s1, s2 )         将字符串s1连接到s2后面,并返回s1

strcpy( s1, s2 )        将字符串s2复制给s1,并返回s1

strncat( s1, s2, n )       将字符串s2的前n个字符串连接到s1后面,并返回s1

strncpy( s1, s2, n )      将s2的前4个字符串复制到s1,并返回s1

例:

char str_1[20] = "123456789";
char *str_2 = "abcdefgh";

cout << "strlen( str_1 )===================" << strlen( str_1 ) << endl;
char str_1_1[20] = "123456789";
cout << "strcmp( str_1, str_2 )============" << strcmp( str_1_1, str_2 ) << endl;
char str_1_2[20] = "123456789";
cout << "strcat( str_1, str_2 )============" << strcat( str_1_2, str_2 ) << endl;
char str_1_3[20] = "123456789";
cout << "strcpy( str_1, str_2 )============" << strcpy( str_1_3, str_2 ) << endl;
char str_1_4[20] = "123456789";
cout << "strncat( str_1, str_2, 4 )========" << strncat( str_1_4, str_2, 5 ) << endl;
char str_1_5[20] = "123456789";
cout << "strncpy( str_1, str_2, 4 )========" << strncpy( str_1_5, str_2, 5 ) << endl;

运行结果

批注:今天在vs上运行的时候出了这样的问题

报错内容:This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

解决办法:右键点击工程-------》选择“属性” 。如图:

点击“预处理器定义”后面的框,选择“编辑”。在里面输入“_CRT_SECURE_NO_WARNINGS”。如图:

点击一系列确定后。关闭vs再打开就可以编译运行了。

时间: 2024-10-29 19:09:32

c风格字符串的标准库函数的相关文章

【C++ Primer每日一刷之八】之八 C 风格字符串

4.3 C 风格字符串 尽管 C++ 支持 C 风格字符串,但不应该在 C++ 程序中使用这个类型.C 风格字符串常常带来许多错误,是导致大量安全问题的根源. 在前面我们第一次使用了字符串字面值,并了解字符串字面值的类型是字符常量的数组,现在可以更明确地认识到:字符串字面值的类型就是const char 类型的数组.C++ 从 C 语言继承下来的一种通用结构是C 风格字符串,而字符串字面值就是该类型的实例.实际上,C 风格字符串既不能确切地归结为 C 语言的类型,也不能归结为 C++ 语言的类型

C++ 标准头文件与C头文件区别与联系以及C风格字符串

1.cstdlib是C++里面的一个常用头文件, 等价于C中的<stdlib.h>. 2.一般一个带".h" 扩展名的库文件,比如iostream.h.这是延续C语言的,为了兼容C.在新标准的库中都有一个 不带".h"扩展名的相对应,区别除了后者好多改进之处,还有一点就是后者的东西都放进了"std"名字空间中. 但是 string.h有点特别,问题在于C++要兼容C的标准库,C的标准库里也有一个名字叫做"string.h&q

删除 C 风格字符串中间的 &#39;*&#39;(不用库函数)

char* removeMiddleStar(char *str) { if (!str) return str; char *p = str; for(; *p == '*'; ++p); char *q = p; while(*++q != '\0'); while(*--q == '*'); for (char *k = p; *k != '\0'; ++k) if ((k < q && *k != '*') || k >= q) *p++ = *k; *p = '\0'

C风格字符串

尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们.这是因为C风格字符串不仅使用起来不太方便,而且极易引发程序漏洞,是诸多安全问题的根本原因. 字符串字面值是一种通用结构的实例,这种结构即是C++由C继承而来的C风格字符串.C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写法.按此习惯书写的字符串存放在字符数组中并以空字符串结束.以空字符结束的意思是在字符串最后一个字符后面跟着一个空字符('\0').一般利用指针来操作这些字符串. C标准库String函数

动态数组、C风格字符串、字符串字面值

动态数组 每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区(free store)或堆(heap).C语言使用malloc和free在堆中分配存储空间,而C++语言则使用new和delete表达式实现相同的功能. 动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化:如果数组元素是内置类型,则无初始化: string *psa = new string[10]; //array of 10 empty strings int

c风格字符串,字符串字面值,c++字符串

C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多个字符表示. C++字符串:通俗而言是string类,为和c语言兼容,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符.(实际上在c++中,string最好直接理解为一个基本类型,相关操作都封装在string类中,避免使用char *出错) 由下面的代码可以看出: int main()

C风格字符串和C++ string 对象赋值操作的性能比较

<<C++ Primer>> 第四版 Exercise Section 4.3.1 部分Exercise 4.2.9 习题如下: 在自己本机执行如下程序,记录程序执行时间: 1 #include "stdafx.h" 2 #include <iostream> 3 #include <string> 4 #include <vector> 5 #include <ctime> 6 7 using namespace

C语言中最常用标准库函数

标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h> <limits.h>      <locale.h>       <math.h>        <setjmp.h> <signal.h>     <stdarg.h>      <stddef.h>      <stdlib.h>

范围for语句 &amp;&amp; 列表初始值&amp;&amp; 标准库函数begin和end

范围for语句: 引入的意义:简化传统for的编写,主要用于遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是: for( 声明: 给定序列) { 执行的操作. } 其中,“给定序列”部分是一个对象,如一个string的对象.“声明”部分用于定义一个变量,该变量将被用于访问序列中的基础元素.每次迭代,“声明”部分的变量会被初始化为“给定序列”部分的下一个元素值. 一个范围for循环的简单例子: 1 string str(“some string”); 2 for(auto c: