关于学习STL部分学到的零碎知识点:
关于STL的部分在前面已经提到,现在主要写一下关于在学习STL时的部分零碎知识点:
万能头文件:#include<bits/stdc++.h>
C++中的.和::和->的区别:
1、A.B则A为对象或者结构体;
2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;
isalpha函数:
一种函数:判断字符ch是否为英文字母,若为小写字母,返回2,若为大写字母,返回1。若不是字母,返回0。在标准c中相当于使用“isupper(ch)||islower(ch)”做测试。
头文件加入或者 (C语言使用<ctype.h>)
C/C++库函数(tolower/toupper)实现字母的大小写转换
c++ string流 stringstream的简单总结:
简单用法:
string s;
stringstream ss;
ss<<2;
ss>>s;//将int转换为string
ss.clear();//使用stringstream来做转换时,最好使用完,进行ss.clear()操作
istringstream类用于执行C++风格的串流的输入操作。//它的作用是从string对象str中读取字符。遇空格结束:
string str ="I am boy";
string b;
istringstream in(str)
while(in >> b){
cout << b<<endl;//
}
//输出:
I
am
boy
ostringstream类用于执行C风格的串流的输出操作。
//通过ostringstream实现任意类型转string:
ostringstream oss;
double a=2.21;
int b=4;
string str;
oss<<a<<"_"<<b<<endl;
str = oss.str();
//输出就是 2.21_4;
typedef是定义一种类型的别名,不是简单的宏替换:
char * p1,p2;实际上p1是字符型指针,而p2是字符型变量,并不是要声明的字符指针;
正确的格式是:char *p1,p2;
那么在这种情况在我们就可以用typedef关键字来声明,避免上述错误,如下:
typedef char pointer;
ponter p1,p2;
在需要大量使用指针时,用typedef的方式就比较省事,还能避免一些错误。
typedef与#define的区别:
typedef char * PT1;
#define PT2 char*;
PT1 p1,p2;
PT2 p3,p4;
上述定义中,p1,p2, p3是char *型的指针,而p4不是指针,是char变量。上面PT2 p3,p4; 等价于char *p3,p4;又等价于char *p3;char p4。即#define可以直接进行字符串的替换,而typedef不可以。