C++从入门到放弃--4.输入流语句,字符和强制类型转换

本文介绍了C++中的数据类型,特别是char及其与ASCII码的关系。接着讲解了三种强制类型转换方法:括号大法、字母大法和static_cast<>()。此外,还详细阐述了输入操作,包括cin的基本用法和其他输入函数的示例。
摘要由CSDN通过智能技术生成

目录

4.1.数据类型:char

4.2 强制类型转换

4.2.1 第一种:括号大法

4.2.2 字母大法

4.2.3 static_cast<>()

4.3 输入

4.3.1 cin输入

4.3.2 其他输入


Hello~大家好,一日一更(?)的我又回来了,今天我们学习输入语句和类型转换(和上次没讲完的数据类型)。

4.1.数据类型:char

你可能会奇怪:

上一次不是讲了数据类型了吗?

别急,还记得char吗?没讲对吧,

char,意思是字符,那到了C++里,它就是存储字符的。

很合理

char,本身它的底层逻辑是一种整数,在上层就变成了字符,字符用这样表示:

'a';

它用单引号' '括起来,但是上面这个表达式实际上返回的是97,为什么呢?

C++的字符编码是用ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)表示的,所以a表示97,放一张图:

找到第二列第十行,就是我们的\n了。

我要新建一个cat字符,初始化为C:

char cat = 'C';

我们这时候直接cout显示它会怎么样?

cout << cat;  //是字符还是ASCII编码?

呵呵,当然是字符了。

如果你的试验是数字(ASCII编码),那用cout.put()就行:

cout.put(cat); //字符
cout << cat;   //不确定
  • 小贴士:cout.put()是cout的一个成员函数(member function),以后讲类时会说到。

signed/unsigned char没用,就是char的一种。

4.2 强制类型转换

在C++中,不同的数据类型存储在它们该有的地方,但是有时需要打破这些规则,有3种方法,来康康吧

4.2.1 第一种:括号大法

比如,我要输出cat字符变量里C字母ASCII编码,怎么办呢?

看程序:

//第一种:括号大法
#include <iostream>
using namespace std;

int main() {
    char cat = 'C';
    cout << "the ASCII number of cat is " << (char) cat /*char (cat)*/ << " .";
    return 0;
}

不难吧

怎么转换?别急,看

第一种格式:

(<转换目标类型>) <变量名称/常量表达式>;

第二种格式:

<转换目标类型> (<变量名称/常量表达式>);

比如,要把dog里的字符转换为int类型:

(int) dog;  //int (dog);

把weight里的double转换为long long类型:

(long long) weight;  //long long (weight);

但是,有时强制转换不能带来好处,比如下面:

#include <iostream>
using namespace std;

int main() {
    double money = 128.20;
    cout << "I have " << (int) money /*int (money)*/ << " RMB.";
    return 0;
}

 啊,我辛辛苦苦攒的2毛钱,全没了!!!

不用太担心,2毛钱。

就像钱主一样,丢失了他的两毛钱,就因为他错误的编写了一个程序。

4.2.2 字母大法

比如我要把1.0转换成long类型。

看格式:

1.0L;

这种方法我们不过多说。

4.2.3 static_cast<>()

话不多说,看格式:

static_cast<类型名>(变量/常量表达式);

这种方法非常好,但是输的字多。

比如我要把chick变量转换成unsigned int:

static_cast<unsigned int>(chick);

实际它是一个外观有点奇怪的函数,对吧。 

4.3 输入

输入,顾名思义就是我从键盘输入的东西到我的程序里来了,我可以对它进行使用,修改,删除等操作,我们输入的东西本身就是一种数据类型,我们来看看。

4.3.1 cin输入

cin和cout是一对好兄弟,分别来自istream和ostream类,cout负责输出,cin负责输入。

cin的格式如下:

cin >> <输入对象>;

当然,跟cout一样,它也可以这样玩:

cin >> a >> b >> c;

输入时应该这样:

cin >> a >> b;  //使用时应该输入:<a的数值> + <空格> + <b的数值>。

来看一眼程序,还记得上次那个(不明生物)吃胡萝卜那个程序吗,我们用cin改造一下:

#include <iostream>
using namespace std;

int main() {
    int carrots;
    cin >> carrots;
    cout << "I have " << carrots << "carrots." << endl;
    carrots = carrots - 2;
    cout << "I eat 2 carrots,now I have " << carrots << " carrots.";
    return 0;
} 

就是我们可以自己输入胡萝卜的数量,看一眼运行结果:

 

 知道了吧~不懂就问~

4.3.2 其他输入

其他的输入方式还有很多,看一眼:

cin >> a;
cin.get(a);
cin.getline(a);
cin.peek(a);
cin.read(a);  //与cout.write()配对使用
get(a);
getchar(a);
//...

好吧,今天到这里吧,拜~

允许转载,请注明出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值