C++杂记

补充的小知识点:

1.while(n--)和while(--n)区别

while(n--)即使不满足也执行一次循环后跳出。

while(--n)不满足直接跳出循环,不执行语句。

  用cout << n << endl就可以看到,加入输入n = 3

  while(n--) :执行完减1后,执行while循环,若不满足则执行完循环后跳出。

  

  while(--n):先执行减1,若不满足>0则跳出while循环,若满足则继续执行循环,

  

2.在vector中注意“vector subscript out of range” 在for循环中注意值得范围以及各种边界条件。

  否则很容易出现vector下标越界。比如 for(int j = i-1;j>0;j--),但是在上一个for循环中for(int i = 0;i<size;i++)

  这种在第一次时,j就为-1那么就越界了。vector的下标>=0.

3.if(isalnum(s[i]))  // if(isalnum(s[i]) == true) ???

  true是等于1的,false=0 。

  isalnum()返回值为int,为真的话是返回的为非0(不一定是1)

  if(isalnum(s[i])) 判断时,也是为0不执行if ,非零执行if语句。

4. res 是string型的, 在res中重写了(operater) +=  (char c) 所以它将char先写为ASIIC码

      假设count = 2, pre[j] = 1,
                res += char(count + '0') + pre[j]; // ASIIC码相加,返回的是c
                res += char(count + '0');//返回的是字符串2
                res += pre[j]; //然后返回字符串21

5.substr()

  substr(index, length) 截取字符串,index为截取字符串的起始位置,length为截取字符串的长度。

  length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。 

6.stoi()

  原型: int atoi(const char *nptr);
  函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

  string 是C++ STL定义的类型,atoi是 C 语言的库函数,所以要先转换成 char* 类型才可以用 atoi。
  string s;
  cin>>s;
  int result = atoi( s.c_str());
  (atoi 这个函数比较弱, 只能读一个数字。 真正NB的是 strtol 函数。)

7.c_str()

  语法:
  const char *c_str();
  c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.
  这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
  注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
  比如:最好不要这样:
  char* c;
  string s="1234";
  c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理

  应该这样用:
  char c[20];
  string s="1234";
  strcpy(c,s.c_str());
  这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作

  再举个例子
  c_str() 以 char* 形式传回 string 内含字符串
  如果一个函数要求char*参数,可以使用c_str()方法:
  string s = "Hello World!";
  printf("%s", s.c_str()); //输出 "Hello World!"

2016.6.19——C++杂记的更多相关文章

  1. 【读书笔记】2016.11.19 北航 《GDG 谷歌开发者大会》整理

    2016.11.19 周六,我们在 北航参加了<GDG 谷歌开发者大会>,在web专场,聆听了谷歌公司的与会专家的技术分享. 中午免费的午餐,下午精美的下午茶,还有精湛的技术,都是我们队谷 ...

  2. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  3. 学习图像算法阶段性总结 (附一键修图Demo) 2016.04.19更新demo

    今天特别感慨,自己从决定研究图像处理,势必要做出一键修图算法. 经历了,三个多月的书籍积累,三个多月的算法调整以及优化. 人是一种奇怪的动物,当你做不到的时候,你以为做到了,自己会感觉很爽,很有成就感 ...

  4. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

    写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...

  5. 2016.1.19 DEV Express控件GirdControl使用

    103.GridControl中添加Button RunDesigner,添加一列,设置对应字段FiledName,ColumnEdit选择ButtonEdit,此时默认风格像下拉框,需调整属性: 在 ...

  6. Murano Weekly Meeting 2016.07.19

    Meeting time: 2016.July.19 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1. ...

  7. 2016.8.19上午初中部NOIP普及组比赛总结

    2016.8.19上午初中部NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1338 这次总结发得有点晚啊!我在这里解释一下, 因为浏览器的问 ...

  8. 2016 - 2 - 19 ARC内存管理知识总结(一,arc基本概念及alloc等方法的实现)

    一. ARC的基本概念 1. 在objc中采用automatic reference counting 机制, 让编译器来进行内存管理.在降低程序崩溃,内存管理泄漏等风险的同时,很大程度减少了程序员的 ...

  9. 从零开始HTML(一 2016/9/19)

    就是准备跟着W3C上的教程过一遍HTML啦,边看边记录更便于理解记忆吧~ 1.属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息.属性总是以名称/值对的形式出现,比如:nam ...

随机推荐

  1. Hadoop 2.6.0 HIVE 2.1.1配置

    我用的hadoop 是2.6.0 版本 ,hive 是 2.1.1版本进入:/home/zkpk/apache-hive-2.1.1-bin/执行hive 后报错: (1)Exception in t ...

  2. DAY7-Flask项目

    1.cookie用于用户登录: Flask用于登录的插件:flask-login 插件初始化: 使用插件:  2.访问权限: 访问某个页面要登录之后才能访问: 为插件编写函数,写在user模块中:

  3. 随机场(Random field)

    一.随机场定义 http://zh.wikipedia.org/zh-cn/随机场 随机场(Random field)定义如下: 在概率论中, 由样本空间Ω = {0, 1, …, G − 1}n取样 ...

  4. windows和Ubantu双系统安装图解

    Win7 U盘安装Ubuntu16.04 双系统详细教程 安装主要分为以下几步: 一. 下载Ubuntu 16.04镜像软件: 二. 制作U盘启动盘使用ultraISO: 三. 安装Ubuntu系统: ...

  5. eclispe 出现超内存错误

    刚开始以为只要修改tomcat的最大最小内存就可以,结果还是报错,后来才懂需要在eclipse.ini文件中修改 -Xms256m-Xmx512m的值改大些,增加虚拟机运行的内存空间 刚开始最小值只有 ...

  6. NAT alg 和 ASPF

    NAT alg 和 ASPF 参考:https://handbye.cn/719.html 来源:https://www.jianshu.com/p/8a8eb36eef7d NAT的部署已经在企业网 ...

  7. 【BZOJ3064】CPU监控(线段树)

    [BZOJ3064]CPU监控(线段树) 题面 BZOJ 洛谷 题解 神仙\(zsy\)出在了\(noip\)模拟的题目.(然而\(zsy\)出的还是这题的升级版) 首先明确一点,这题是一个吉司机线段 ...

  8. Alpha 冲刺 —— 十分之九

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...

  9. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

    1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌 ...

  10. 【位运算】判断一个数是否为2的n次方

    import java.util.Scanner; /** * 功能:用位运算,判断一个数是否为2的n次方. * 思路:用1做移位操作,然后判断移位后的值是否与给定的数相同. */ public cl ...