1. 强制保留n位小数(位数不足则强制补零)
  
  头文件:
  
  #include <iomanip>
  
  在输出前:
  
  cout<<setprecision(n);
  
  也有不用头文件的方式,在输出前:
  
  cout.setf(ios::fixed);
  
  cout.precision(n);
  
  Printf也可:(以保留3位为例)
  
  double d=2.0;
  
  printf("%.3lf",d);
  
  2.数组清零
  
  头文件及方法:
  
  #include <cstring>
  
  ...
  
  memset(a,0,sizeof(a))
  
  3.动态数组vector
  
  不存东西时不占空间,来多少数据就用多少空间,用于节省空间。
  
  #include  <vector> //调用
  
  ...
  
  vector  < int > a;     //声明
  
  ...
  
  a.push_back (3) //在数组a的后面添加一个数3
  
  a.pop_back()      //在尾部弹出一个数据
  
  a.size()               //返回元素个数
  
  a.clear()             //清空
  
  求值: a[0]  (该数组第一个数) a.back()  (该数组最后一个数)
  
  4.队列queue与栈stack
  
  队列的调用与定义:
  
  #include <queue>
  
  ...
  
  queue <int> q;    
  
  几个函数:
  
  q.empty()             (队列为空返回true 否则返回false)
  
  q.size()                (返回队列元素个数)
  
  q.pop()                 (删除队尾元素)
  
  q.push(a)             (在队尾加入元素a)
  
  q.front()                (返回队首元素)
  
  q.back()               (返回队尾元素)
  
  栈的调用与定义
  
  #include <stack>
  
  ...
  
  stack <int> s;
  
  几个函数:
  
  s.empty()          (栈为空返回true 否则返回false)
  
  s.size()             (返回栈中元素个数)
  
  s.pop()             (过程,删除栈顶元素)
  
  s.top()              (返回栈顶元素)
  
  s.push(a)         (在栈顶加入元素a)
  
   5. C++输入输出(重点)
  
  C输入输出
  
  头文件:
  
  #include <stdio.h>
  
  ...
  
  int n;
  
  scanf("%d",&n);  
  
   字符:%c
  
   字符数组:%s   
  
   long long(unsigned long long): %lld
  
   float: %f
  
   double :  %lf
  
   (注意:scanf和cin一样,遇到空格会结束)
  
   多组数据连续读入(EOF一定要大写):
  
  while (scanf("%d",&t)!=EOF)
  
  输出:
  
  printf("%d",n)
  
  与scanf的区别:不用&取地址
  
  在输出的时候也可直接输出字符内容
  
  int a,b,c;
  
  scanf("%d%d",&a,&b);
  
  c=a+b;
  
  printf("%d+%d=%d\n",a,b,c);
  
   输入:4 5
  
   输出:4+5=9
  
   “\n”表示回车
  
   直接写printf("%d+%d=%d\n",a,b,a+b)也行
  
  字符串(字符数组)输入输出
  
  两者均可直接cin、cout。
  
  对于字符数组,还可:(此法无法读入string)
  
  char c[50];
  
  scanf("%s",&c);
  
  printf("%s",c);
  
  使用以上方法输入时,遇到空格会结束。
  
  含空格的字符串(字符数组)输入输出
  
  对于字符数组:
  
  scanf("%[^\n]",&c);
  
  表示遇到回车才算读入结束
  
  还可:
  
  cin.get(c,50);
  
  后一个参数表示接受读入的位数,若参数为50,实际最多可接收49个字符,若输入长度不够,毫无影响。
  
  (这个参数可以超过字符数组的长度!)
  
  此外,cin.getline()与cin.get功能、参数一样。
  
  对于字符串:(需要头文件)
  
  #include <string>
  
  ...
  
  getline(cin,s);
  
  6.字符串(字符数组)处理函数(重点)
  
  以下所有有关位置的参数,事先明确,无论是字符数组还是字符串,首字符索引都为0。
  
  获取长度
  
  对于字符串s有s.size(),对于字符数组c,有strlen(c)。
  
  比较
  
  比较规则:自左向右逐个字符比较,直到区分或者某字符串(数组)结束,此时认为短的那个字符串(数组)小。
  
  对于字符数组:
  
  strcmp(c1,c2);
  
  strncmp(c1,c2,n);
  
  后一个表示比较两个字符数组的前n位。
  
  若c1==c2,则返回零;若c1<c2,则返回负数;若c1>c2,则返回正数。
  
  对于字符串,直接>、<、==,也可以:
  
  str1.compare(str2);
  
  str1.compare(pos1,len1,str2,pos2,len2);
  
  连接
  
  对于string,可以直接使用加号连接,如:
  
  string s="a";
  
  s+='b';
  
  s+="cd";
  
  也可以:
  
  str1.append(str2);
  
  str1.append(str2,pos,len);
  
  前者相当于s1+=s2;
  
  后者也是在s1的末尾加,加s2的第pos位开始的连续len个字符。
  
  对于字符数组:
  
  strcat(c1,c2);
  
  strncat(c1,c2,n);
  
  将c2加到c1中,后一个是将c2的前n个字符加到c1中。
  
  查找
  
  对于字符数组:
  
  strchr(c,char);
  
  strstr(c,c2);
  
  前者:找到字符char在字符数组c中第一次出现的位置,并返回包括该位置字符及其之后的c的子数组。
  
  后者:与前者相似,找的是字符数组c2。
  
  若没找到,两者无输出(且在此之后所有输出语句好像都失效了)。
  
  对于字符串:(后者表示从后往前找)
  
  str1.find(str2);
  
  str1.rfind(str2);
  
  返回一个整数,表示str2在str1中第一次出现的位置,若没有返回-1。
  
  清除
  
  对string:
  
  s.clear(www.michenggw.com);//全部清除
  
  s.erase(pos,len);
  
  插入
  
  对string:
  
  str1.insert(pos1,str2);
  
  str1.insert(pos1,str2,pos2,len2);
  
  str1.insert(pos1,num,char);
  
   numchar是插入次数,char是要插入的字符。 
  
  提取
  
  对String:
  
  str2 = str1.substr(pos);
  
  str2 = str1.substr(pos,www.dasheng178.com/ len);
  
  前者:将str1从第pos位及之后的所有字符赋值给str2。
  
  后者:将str1从第pos位开始连续len个字符赋值给str2。
  
  替换
  
  对字符数组:
  
  strcpy(str1,str2);
  
  strncpy(str1,str2,n);
  
   前者相当于str1=str2;
  
  后者指把str2的前n位替换掉str1的前n位。
  
  对于字符串:
  
  str1.replace(pos1,www.mcyllpt.com/ len1,str2);
  
  str1.replace(pos1,len1,str2,pos2,len2);
  
  前者:把str1从pos1开始的连续len1位替换成str2。
  
  后者:多出的两个参数指定了str2参与替换的部分。
  
  字符串与字符数组相互转换
  
  字符数组可直接赋值给字符串。
  
  字符串s转字符数组a:
  
  strcpy(a,s.c_str());
  
  字符(串)数组与数字相互转换
  
  字符数组转数字:
  
  char a[]="123.456";
  
  int t;
  
  double d;
  
  sscanf(a,"%d",&t);
  
  sscanf(a,"%lf",&d);
  
  不仅可以转成整数,也可以识别小数点,直接转成实数。
  
  数字转字符数组:
  
  char a[www.hengy178.com];
  
  int t=123;
  
  double d=12.34;
  
  sprintf(a,"%d",t);
  
  sprintf(a,"%lf",d);
  
  字符串转数字:
  
  #include <sstream>
  
  ...
  
  string str = "123.45";
  
  double d;
  
  stringstream ss;
  
  ss << str;
  
  ss >> d;
  
  数字a转字符串str:(同样支持整数和实数)
  
  #include <sstream>
  
  ...
  
  double a=12.34;
  
  string str;
  
  stringstream ss;
  
  ss << a;
  
  ss >> str;
  
  PS:stringstream在数据量大的时候太慢,建议使用字符数组类型的转换。
  
  --------------------

C++的一些小操作、常用库及函数(持续更新)的更多相关文章

  1. STL 一些常用的STL函数(持续更新

    先说一下  一边要用到算法的东西一般要加#include<algorithm>头文件 一.栈和队列 1 栈 :一种线性表 特点  后进先出 头文件  #include<stack&g ...

  2. php 常用的好函数(持续更新)

    parse_url parse_url $url = "http://www.electrictoolbox.com/php-extract-domain-from-full-url/&qu ...

  3. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

  4. Android 常用开源库总结(持续更新)

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...

  5. 资源| 学习视频库-永久有效,持续更新!附赠java面试汇总

    每天进步一丢丢,连接梦与想 我们总是羡慕他人的光芒,却忘记自己也会发光 声明 资源来自于网络,小编只是资源的搬运工,若有侵权,联系小编即删. 期待已久的学习视频库来啦! 经过小编多日整理,整理了1.5 ...

  6. PHP的常用函数 持续更新

    PHP的常用函数 前言: 由于害怕遗忘,故在此记录下常用的php函数,以便复习 1 define函数 作用:定义常量 用法 <?php define('a',100); ?> 2 intv ...

  7. Android常用开源库集合【持续更新】

    1.FastJson  阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...

  8. C语音常用库和函数

    #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 # ...

  9. sqlserver常用知识点备忘录(持续更新)

    背景 一个项目的开发,离不开数据库的相关操作,表/视图设计,存储过程,触发器等等数据库对象的操作是非常频繁的.有时候,我们会查找系统中类似的代码,然后复制/粘贴进行再进行相应的修改.本文的目的在于归纳 ...

随机推荐

  1. Apache Maven(七):settings.xml

    settings.xml 文件中包含settings标签,这个标签可以配置如何去执行Maven.其中包括本地存储库位置,备用远程存储库服务器和身份验证信息等值. 有如下两个位置可能存放这setting ...

  2. Static关键字,遇到的问题_1

    一.问题 父类代码:                                                                                          ...

  3. Java学习笔记十四:如何定义Java中的类以及使用对象的属性

    如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...

  4. python2.7入门---break语句&continue语句&pass空语句

        这篇文章记录的就是比较好玩的东西了,也是比较重要的.咱们先来看一下break语句.Python break语句,就像在C语言中,打破了最小封闭for或while循环.break语句用来终止循环 ...

  5. java 第五章 方法定义及调用

    1.方法的定义 什么是方法 方法是完成某个功能的一组语句,通常将常用的功能写成一个方法 方法的定义 [访问控制符] [修饰符] 返回值类型 方法名( (参数类型 形式参数, ,参数类型 形式参数, , ...

  6. springboot2.x+maven+proguard代码混淆

    由于需要将源码打包做代码混淆,选择proguard,开始使用各种问题,各种jar包版本问题,但最终成功了,记录一下,也希望能够帮助大家 在pom中添加代码: <build> <fin ...

  7. 谷歌面试官经典作品(CTCI)目录

    1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除字符串中重复字符 1.8 利用已知函数判断字符串是否为另一字符串的子串 2.1 从链表中移除重复结点 2.2 实现一个算法从一个 ...

  8. Service ANR问题

    错误堆栈: ActivityManager: ANR in com.oppo.reader PID: 8071 Reason: executing service com.oppo.reade//co ...

  9. ExtJs工具篇(2)——Aptana Studio 3 汉化

    本身用的是中文版本的,但是输入一些中文后,竟然有乱码,所以就想把它汉化.在网上搜索了一下,把步骤记录如下: 首先到这个网站去 http://aptana.com/support 选择View Docu ...

  10. 3招搞定APP注册作弊

    在说如何应对之前,易盾先给各位盾友梳理移动端APP可能遇到哪些作弊风险.1. 渠道商刷量,伪造大量的下载量和装机量,但没有新用户注册:2. 对于电商.P2P.外卖等平台,会面临散户或者团队刷子的注册- ...