C++输入

输入

cin

cin使用空白(空格,制表符,换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入时只读取一个单词。读取该单词以后,cin将该字符串放到数组中,并且自动在结尾添加空字符。

每次读取一行字符串输入

isrteam中的类(如cin)提供了一些面向行的类成员函数:getline()和get();这两个函数都是取一行输入,直到遇到换行符,然而,随后getline()将会丢弃换行符,而get()将换行符保留在输入序列中。

面向行的输入:getline()

getline()函数读取整行,它使用回车键输入的换行符来确定输入结尾。
要调用这种方法,可以使用cin.getline()。该函数有两个参数,第一个参数是用来存储输入行的数组名称,第二个参数是要读取的字符数,如果这个参数是20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加空字符。
getline()函数在读取指定数目的目的字符或者遇到换行符时停止读取
getline()函数每次读取一行,它通过换行符来确定行尾,但不保存换行符,相反,在存储字符串的时候,它用同字符来代替换行符;

#include <iostream>
using namespace  std;
 
void test02()
{
	const int size = 6;
	char  a[10];
	char  b[10];
	cin.getline(a, size);
	cout <<"输出a:"<< a << endl;
	cin.getline(b, size);
	cout << "输出b:"<<b << endl;

}
int main()
{
	test02();
	system("pause");
	system("cls");
	return 0;
}

在这里插入图片描述

面向行的输入:get()

该函数有几种变体,其中一种变体的工作方式与getline()类似。它们的接收参数相同,解释参数也相同,并且都读取到行尾,但是get并不会读取丢弃换行符

const int size = 6;
	char  a[10];
	char  b[10];
	char  c[10];
	cin.get(a, size);
	cout <<"输出a:"<< a << endl;
	cin.get(b, size);
	cout << "输出b:"<<b << endl;
	cin.get(c, size);
	cout << "输出c:" << b << endl;

连续两次调用get():
由于第一次调用后,换行符就会留在队列中去,因此第二次调用时看到第一个字符也是换行符,因此cin()认为已经到达了行尾,而并没有发现任何可以读取的内容。
幸运的是,cin()有另一种变体:使用不带任何参数的cin.gte(),调用可以读取下一个字符(即使是换行符),因此可以用它来处理换行符
在这里插入图片描述

混合字符串和数字

在这里插入图片描述
用户根本没有输入地址的机会。当cin读取年份,回车键生成的换行符留在了输入队列中,后面的cin.getline*(看到换行符后,将认为是一个空行,并且将空字符串赋给address数组。
可以通过使用没有参数的get()或者使用接受一个char参数的get

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值