一些简单函数的作用
来源:互联网 发布:树莓派gpio python 编辑:程序博客网 时间:2024/06/06 00:45
1.sscanf函数
在做一道九度上机题时,突然发现sscanf()函数非常有用,就顺便从网上搜集资料整理一下。
sscanf() 的作用:从一个字符串中读进与指定格式相符的数据.
原型: int sscanf (const char *str,const char * format,……..);
说明: sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。转换后的结果存于对应的参数内。
成功则返回参数数目,失败则返回0。
注意:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。
这里就举几个经常用到的例子来说明他的用法,便于大家深刻理解他的用法.
例子:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- int main(){
- char str[100];
- //用法一:取指定长度的字符串
- sscanf(”12345”,“%4s”,str);
- printf(”用法一\nstr = %s\n”,str);
- //用法二:格式化时间
- int year,month,day,hour,minute,second;
- sscanf(”2013/02/13 14:55:34”,“%d/%d/%d %d:%d:%d”,&year,&month,&day,&hour,&minute,&second);
- printf(”用法二\ntime = %d-%d-%d %d:%d:%d\n”,year,month,day,hour,minute,second);
- //用法三:读入字符串
- sscanf(”12345”,“%s”,str);
- printf(”用法三\nstr = %s\n”,str);
- //用法四:%d 和 %*s 加了星号 () 表示跳过此数据不读入. (也就是不把此数据读入参数中)
- sscanf(”12345acc”,“%*d%s”,str);
- printf(”用法四\nstr = %s\n”,str);
- //用法五:取到指定字符为止的字符串。如在下例中,取遇到’+’为止字符串。
- sscanf(”12345+acc”,“%[^+]”,str);
- printf(”用法五\nstr = %s\n”,str);
- //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。
- sscanf(”12345+acc121”,“%[^a-z]”,str);
- printf(”用法六\nstr = %s\n”,str);
- return 0;
- }
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str[100]; //用法一:取指定长度的字符串 sscanf("12345","%4s",str); printf("用法一\nstr = %s\n",str); //用法二:格式化时间 int year,month,day,hour,minute,second; sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second); printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second); //用法三:读入字符串 sscanf("12345","%s",str); printf("用法三\nstr = %s\n",str); //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中) sscanf("12345acc","%*d%s",str); printf("用法四\nstr = %s\n",str); //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。 sscanf("12345+acc","%[^+]",str); printf("用法五\nstr = %s\n",str); //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。 sscanf("12345+acc121","%[^a-z]",str); printf("用法六\nstr = %s\n",str); return 0;}
2.find函数
通常来说,find函数用于寻找某个序列的在string中第一次出现的位置。
find函数有以下四种重载版本:
size_t find (const string& str, size_t pos = 0) const noexcept;
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, size_type n) const;
size_t find (char c, size_t pos = 0) const noexcept;
参数说明:
str/s/c:要寻找的序列,可以是字符串(版本1),也可以是字符串字面值或者说C风格字符串(版本2、3,在版本3中,所寻找的序列是从s[0]开始的前n个字符),也可以是字符(版本4)。
pos:从string的pos位置开始寻找(注意第一个位置是0)。
函数返回序列第一次出现的位置,如果没有找到则返回string::npos。
4.c_str函数
- //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
- //主要介绍c_str
- //c_str():生成一个const char*指针,指向以空字符终止的数组。
- //这个数组应该是string类内部的数组
- #include <iostream>
- //需要包含cstring的字符串
- #include <cstring>
- using namespace std;
- int main()
- {
- //string–>char*
- //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同
- //这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。
- //因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中
- const char *c;
- string s = ”1234”;
- c = s.c_str();
- cout<<c<<endl;
- s = ”abcde”;
- cout<<c<<endl;
- }
//标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
//主要介绍c_str
//c_str():生成一个const char*指针,指向以空字符终止的数组。
//这个数组应该是string类内部的数组
include <iostream>
//需要包含cstring的字符串
include <cstring>
using namespace std;
int main()
{
//string-->char*
//c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同
//这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。//因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中const char *c;string s = "1234";c = s.c_str();cout<<c<<endl;s = "abcde";cout<<c<<endl;
}
结果是:
上面如果继续用c指针的话,导致的错误将是不可想象的。就如:1234变为abcd
其实上面的c = s.c_str(); 不是一个好习惯。既然c指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?这就要用到strcpy等函数(推荐)。
//更好的处理为:
- //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
- //主要介绍c_str
- //c_str():生成一个const char*指针,指向以空字符终止的数组。
- //这个数组应该是string类内部的数组
- #include <iostream>
- //需要包含cstring的字符串
- #include <cstring>
- using namespace std;
- int main()
- {
- //更好的方法是将string数组中的内容复制出来 所以会用到strcpy()这个函数
- char *c = new char[20];
- string s = ”1234”;
- // c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
- strcpy(c,s.c_str());
- cout<<c<<endl;
- s = ”abcd”;
- cout<<c<<endl;
- }
//标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组//主要介绍c_str//c_str():生成一个const char*指针,指向以空字符终止的数组。//这个数组应该是string类内部的数组#include <iostream>//需要包含cstring的字符串#include <cstring>using namespace std;int main(){ //更好的方法是将string数组中的内容复制出来 所以会用到strcpy()这个函数 char *c = new char[20]; string s = "1234"; // c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。 strcpy(c,s.c_str()); cout<<c<<endl; s = "abcd"; cout<<c<<endl;}
- 一些简单函数的作用
- 一些简单的函数
- lua的一些简单函数
- 一些简单的php函数
- 一些函数的简单介绍
- 简单介绍C++中虚析构函数的作用
- SQL 使用函数一些简单的事例
- SQL一些简单函数的总结
- Openmax 一些函数的简单介绍
- 一些简单的设备驱动函数
- 数据库中一些简单的函数
- 一些简单的设备驱动函数
- 一些简单的设备驱动函数
- 一些简单的析构函数例子
- 一些简单字符串函数的实现
- js中一些简单的验证函数
- 母函数的一些简单总结
- 简单的一些字符串实现函数
- 集群调优
- [kernel 启动流程] 前篇——vmlinux.lds分析
- python3 函数参数
- 网络桥接及链路聚合
- String 类
- 一些简单函数的作用
- 随机森林
- 湖大坑爹期中考试。
- [kernel 启动流程] (第一章)概述
- 机器学习基石-Three Learning Principles
- java设计模式之策略模式
- 量化投资学习日记3
- mybatis传多个参数(不使用@param注解情况下),3.4.2版本之后使用#{0}-#{n}引起的参数绑定异常,以及settings属性中useActualParamName的作用。
- 奇怪的分式