C++笔记(3)——string.h相关的一些小知识
strlen()
用于得到字符数组中第一个\0
前的字符的个数,格式如下:
strlen(数组);
例子:
#include <stdio.h>
#include <string.h>
int main(){
char str[10];
gets(str);
int len = strlen(str);
printf("%d\n", len);
return 0;
}
输入:
ababab
输出:
6
strcmp()
用于比较字符串大小,比较原则是按照字典序:
strcmp(字符数组1, 字符数组2)
如果数组1长则返回正数,数组2长则返回负数,相等返回0。
#include <stdio.h>
#include <string.h>
int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
int cmp = strcmp(str1, str2);
if(cmp < 0) printf("str1 < str2\n");
else if (cmp > 0) printf("str1 > str2\n");
else printf("str1 == str2\n");
return 0;
}
上图中前两行是输入,最后一行是输出。
strcpy()
复制字符串给另一个字符串,用法:strcpy(str1, str2)
。这样会把str2
内容复制到str1
。
示例:
#include <stdio.h>
#include <string.h>
int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
strcpy(str1, str2);
puts(str1);
return 0;
}
strcat()
拼接两个字符串,strcat(str1, str2)
,
#include <stdio.h>
#include <string.h>
int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
strcat(str1, str2);
puts(str1);
return 0;
}
sscanf与sprintf
sscanf
与sprintf
是专门用于处理字符串的,可以理解为“string + scanf”和“string + printf”。
用法就类似于在内存上以scanf
和printf
的方式将数据进行传递。举个例子,sscanf(str, "%d", &n);
,这就是将str中内容以%d
的格式写入到n中(可以这样理解,scanf(screen, "%d", &n);
相当于是从screen屏幕捕获输入并输入到n中,从左到右,而sscanf
起到的作用就差不多这样,从str按照"%d"
的格式输入到n。sprintf
则反过来,从右往左)。
比较简单,直接上示例:
#include <stdio.h>
int main() {
int n;
char str[100] = "123";
sscanf(str, "%d", &n);
printf("%d\n", n);
return 0;
}
#include <stdio.h>
int main(){
int n = 233;
char str[100];
sprintf(str, "%d", n);
printf("%s\n", str);
return 0;
}
复杂点的例子:
#include <stdio.h>
int main(){
int n;
double db;
char str[100] = "2048:3.14, hello", str2[100];
sscanf(str, "%d:%lf, %s", &n, &db, str2);
printf("n = %d, db = %.2f, str2 = %s\n", n, db, str2);
return 0;
}
在字符串处理的时候相当有用。
C++笔记(3)——string.h相关的一些小知识的更多相关文章
- C标准库<string.h>实现
本文地址:http://www.cnblogs.com/archimedes/p/c-library-string.html,转载请注明源地址. 1.背景知识 <string.h>中声明的 ...
- 彻底弄清c标准库中string.h里的常用函数用法
在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...
- c语言string.h和memory.h某些函数重复问题
在C语言中,为了使用memset()函数,你是选择#include <string.h>还是<memory.h>?两个都可以,如何选择? <string.h>,标准 ...
- [C++]在什么时候需要“#include string.h“
相关资料:https://zhidao.baidu.com/question/515578726.html C++中,string头文件基本上已经包含在iostream中了.但是,平时使用的时候建议加 ...
- 头文件string与string.h的区别
在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态 ...
- C++中cstring.h和string.h的区别
转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...
- 震惊!<string.h>、<cstring>和<string>竟然可以这么用!
为什么有这么多string相关的头文件呢,小编秦始皇今天带大家看一下: 1.[string.h] 定义如下:"C语言标准库中一个常用的头文件,在使用到字符数组时需要使用.[strin ...
- 《C标准库》——之<string.h>
<string.h>里的字符串操作函数是经常要用到的,因此阅读了源码后自己实现了一些: 拷贝函数 void * Mymemcpy(void * sDst, const void * sSr ...
- <string> 与<string.h>、<cstring>的区别
<string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...
随机推荐
- SpringMVC——MVC执行流程底层剖析
SpringMVC流程图如上面所示,根据上图,串联一下底层源码: 1.在DispatcherServlet中找到doDisPatch 2.观察方法体,然后找到getHandler方法 3.点进方法,发 ...
- AtCoder AGC009E Eternal Average (DP)
题目链接 https://atcoder.jp/contests/agc009/tasks/agc009_e 题解 又被劝退了... 第一步转化非常显然: 就等价于一开始有一个数\(1\), 有\(\ ...
- Inter IPP & Opencv 在centos 环境下使用GCC命令行编译c++运行
Inter IPP & Opencv 的安装看这里:https://www.cnblogs.com/dzzy/p/11332907.html 考虑到服务器一般没有桌面环境,不能用IDE编译,直 ...
- Inter IPP+ VS + opencv 在 Windows下的环境搭建
首先Inter官网申请和下载:https://software.intel.com/en-us/intel-ipp 需要VS2013或更高版本(先装vs再装IPP,我的版本是VS2015社区版,IPP ...
- rabbitMq实战使用
只做下工作记录,比较重要的几个属性: concurrency:一个生产者可以同时由多少个消费者消费,这个一般根据你的机器性能来进行配置 prefetch:允许为每个consumer指定最大的unack ...
- 【黑马JavaSE】1_1_11_IDEA、12_方法、13_重载
文章目录 1_1_11_01开发工具IntelliJ IDEA 1.3 创建包.查看包的目录结构 1.5 字体设置(File->Settings->Editor->Font) 1.6 ...
- R语言:时间的转化
一般使用R从数据库导出来的时间数据一般都不是我们能看的懂的(具体是什么格式的我也忘记了),需要做如下转化 as.Date(time,origin = '1970-01-01') 最近从网上爬下来的时间 ...
- web前端知识点反思总结
当别人问你之前的知识,我们便会勾起之前的回忆,然后进行一番痛苦的挣扎后,发现我依然记得你 什么是 DTD ? 文档类型定义 (DTD) 可定义合法的 xml 文档的构建模块 ,他是使用一系列合法的元素 ...
- synchronized三种使用方式,及锁的类型验证
Synchronized常用三种使用方式 1.修饰普通方法:锁对象即为当前对象 2.修饰静态方法:锁对象为当前Class对象 3.修饰代码块:锁对象为synchronized紧接着的小括号内的对象 一 ...
- 浅析java中的四种线程池
1.使用线程池的好处 2.JUC中几种常用的线程池 java.util.concurrent包下的Executors工厂类,提供了一系列的线程池的创建方法,其构造方法如下: public Thre ...