数据表示
顺便复习下数据类型吧
C中的基本数据类型有
* short,int ,long 系列
* unsigned 系列
* float, double, long double 系列
* char
在C++981标准中,上面的类型也一样存在
当然,又加入了两种新的数据类型
* wchar_t(宽字符类型)
* bool(布尔类型)
c++11标准新加入了
* long long,unsigned long long
* char16_t
* char32_t
1. 几种新类型
wchar_t 宽字符类型
由于一般char只可以存储一个字节的字符
而现实中,汉字,韩文……都占据着两个字节
所以就有了这种类型
使用它的话,会扯到很多新函数……
就不写了
bool布尔类型
一个只占用一个字节的变量
它只有两个值
true
false
因此,
在以后我们写函数的时候,就可以
bool function (...)
{
...
return true;
}
简单I/O
写到这才发现自己还有好多不会
1. cin效率低
在C中,我们常常用在stdio.h中的
scanf ,getchar ,gets, fgets输入
在C++中,我们的cin,同样能做到
而且能做的更好(不过,效率低……)
2. 只用cin
以前说过
用cin读取字符
将会一个不落的全部读下
连空白字符也不放置
而用cin读取其他的数据类型
则会自动跳过空白字符
3. cin的get成员函数
先放例子
cin.get();// # 1.
char c = cin.get(); //# 2
char d; // # 3
cin.get(d);
- get()是cin的一个成员函数
因此我们可以用句点 . 来调用 - 上面三种使用方式,
都达到了一个相同的目的
:从键盘读取一个字符 - 第二第三种调用方式
则能够把读取的字符赋值给一个字符变量 - 注意:不会跳过空白字符
4. cin的getline成员函数
函数作用:
从标准输入设备键盘读取一串字符串,
并以指定的结束符结束。
使用方法
char s[40];
cin.getline(s,40); # 1
- 先定义一个字符数组以存放数据
- 第一条语句,说明:
* 把数据读到s数组中
* 至多读40位
* 若读满40位,或者遇到换行符,
停止读取,不读取换行符 - 注意:
停止读取时,输入流中的换行符将会被丢弃
这里放一个网址,cin更详细的用法上面还有
http://blog.csdn.net/k346k346/article/details/48213811
5. 输出类型的选择
以前说过
cout和cin都能够自动处理不同类型的数据
那么问题就来了
下面有一个代码片段
int b = 2;
int *p1 = &b;
char *p2 = "acacac";
cout << p1 ;
cout << endl ;
cout << p2 ;
p1 和 p2 都是指针
这下会输出什么东东呢?
这里,我们有两种方法可以显式地确定输出类型
* 常量后缀
* long 后缀为L
* unsigned 后缀为UL,或LU
* float 后缀F
* 大小写无关
* 强制类型转换
char * p = "acacac";
cout << 100L;//输出long类型的100;
cout << p;//输出字符串
cout << (int *)p;//输出字符串的地址
//输出
100
acacac
0x488000
6. 输出进制的选择
我们其实可以
肆意输出各种进制的数
cout << oct;// 八进制
cout << dec;// 十进制
cout << hex;// 十六进制
使用方法是这样的:
在准备输出16进制的数前
先放一句:cout << hex;
这句话不会输出任何东西
但是会使后面的所有整数都输出为十六进制
而且效果是持续的,直到你换用其他进制
...//一些语句
cout << hex;
cout << 28 << " ";
cout << 5454 << endl;
cout << dec;
cout << 28 << " ";
cout << 5454 << endl;
// 输出
1c 154e
28 5454
7. 简单格式化输出
看资料看着看着
发现还是printf方便一些
这里就不多讲了
http://www.cnblogs.com/walfud/articles/2047096.html
8.一点小感想
自以为C++预习的还不错了
写起推送才发现自己还有好多不会
希望大家不要学我
但还是要继续学吧。
- c++98:c++一种比较旧的版本,现在比较新的是c++11,
如果在g++编译器里用c++11 需要加一条指令
-std=c++11
↩