首页 > 代码库 > 学习C++的第一天
学习C++的第一天
# include<iostream> //头文件的使用
using namespace std; //命名空间的使用
int main()
{
int a,b;
cin>>a>>b; //输入
cout<<b<<a<<endl; //输出 与 换行
return 0;
}
1、C++ 可以直接比较两个字符串的大小;
2、cout <<"asdsf"
"ashdj"; 类似于 asdsfashdj
3、
# include<iostream>
# include<string>
# include<vector>
# include<algorithm> //运用vector容器 要用这两个头文件
using namespace std;
int main()
{
vector<string> v; //定义vector类的容器 v(用来装字符串)
for(;;)
{
string s; //声明字符串变量 s
getline(cin,s); //输入 字符串存放到s
if(s == "stop")
{
break;
}
v.push_back(s); //把s里的字符串存到v容器的底部
}
sort(v.begin(),v.end()); //对v的第一个到最后一个元素进行排序
for(int i=0;i<v.size();i++) /////v.size()表示v的大小
{
cout<<v[i]<<endl; //endl换行
}
return 0;
}
4、对于任何不为0的整数a、b 。 a%b = a - b*(a / b );
5、const int a = 7 等价于 const int a (7) a不可以通过赋值改变值的大小
6、运算环境下 布尔型值true 和 false 可自动转化为 int类型 0 和 1 ; 逻辑环境下 任何非0算术值都会转化为true 0转化为false
7、使所有浮点值保留到小数点后十位
要用到 头文件 #include <iomanip> //要用到格式控制符时
语句 cout << fixed << setprecision (10)
cout<<setprecision(0)<<a<<endl; 保留整数部分
cout<<setprecision(1)<<a<<endl; 保留整数部分
cout<<setprecision(2)<<a<<endl; 保留一位小数
8、#include <iomanip>
这里面iomanip的作用比较多:
主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文
件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:
dec 置基数为10 相当于"%d"
hex 置基数为16 相当于"%X"
oct 置基数为8 相当于"%o"
setfill(c) 设填充字符为c
setprecision(n) 设显示小数精度为n位
setw(n) 设域宽为n个字符
这个控制符的意思是保证输出宽度为n。如:
cout<<setw(3)<<1<<setw(3)<<10<<setw(3)<<100; 输出结果为
1 10100 (默认是右对齐)当输出长度大于3时(<<1000),setw(3)不起作用。
setioflags(ios::fixed) 固定的浮点显示
setioflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
9、枚举类型就相当于助记符,帮助程序员记忆的。
10、
如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enum box{pencil,pen};
enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。
enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作
void main(void)
{
enum egg {a,b,c};
enum egg test; //在这里你可以简写成egg test;
test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test = (enum egg) 0;)
在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量 说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚 举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
只能把枚举值赋予枚举变量
11、一般情况下else 与距离近的if 搭配
12、浮点数值只是近似值 比如0.1 实际上保存为无限接近0.0999999999
13、switch 后的参数一定不能是浮点类型的
14、char ch;
cin>>ch;(会跳过white—space字符)
解决方法:运用cin.get(ch);
15、eof函数
eof是end of file 的缩写,表示“文件结束”。从输入流读取数据,如果到达文件末尾(遇到文件结束符),eof函数值为非零值(表示真),否则为0(表示假)
16、ignore函数
调用形式为cin.ignore(n,终止字符) 函数作用是跳过输入流中n个字符,或在遇到指定的终止字符时提前结束(此时跳过包括终止字符在内的若干字符)。//可以取走不合适的值。
从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。
它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。
比如可以这么用:
cin.ignore(1024,‘\n‘),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数‘\n‘起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。
cin.ignore(numeric_limits<std::streamsize>::max(),‘/n‘);//清除当前行
cin.ignore(numeric_limits<std::streamsize>::max()); //清除cin里所有内容
不要被长长的名字吓倒,numeric_limits<std::streamsize>::max()不过是climits头文件定义的流使用的最大值,你也可以用一个足够大的整数代替它。
17、
cin.clear()、cin.sync()
cin.clear()是用来更改cin的状态标示符的。
cin.sync()是用来清除缓存区的数据流的。
如果标示符没有改变那么即使清除了数据流也无法输入。所以两个要联合起来使用。
18、fail函数
调用形式为cin.fail()。输出0,表明输入流已恢复正常。输出1,表面输入流不正常(原本整型变量要提取整数 却遇到字符型 所以会不正常)。cin.clear()会复位标志
19、peek函数
调用形式为cin.peek() 观察当前指针或输入的值 用法if(cin.peek == 2)
学习C++的第一天