cin,scanf,getline,fgets

cin和scanf

用法

  • cin是C++中标准输入流的对象,用于从标准输入设备(键盘)读取输入数据。例如:cin >> num;,其中num是一个变量,表示要读取的数据。

  • scanf是C语言中的标准输入函数,用于从标准输入设备读取输入数据。例如:scanf("%d", &num);,其中%d表示要读取的数据类型为整型,&num表示要将读取的数据存储到num变量中。

区别

  • cin是C++中的输入流,具有更高的面向对象特性,支持类型检查和类型转换,可以自动识别输入数据的类型,并将其转换为对应的变量类型。而scanf是C语言中的输入函数,需要手动指定要读取的数据类型,并且不支持类型转换,容易出现类型不匹配的问题。

  • cin通常比scanf更安全,可以防止缓冲区溢出,不需要手动指定要读取的变量的大小。而scanf需要手动指定要读取的变量的大小,如果读取的数据长度超出了变量的大小,就会出现缓冲区溢出的问题。

注意点

  • cinscanf遇到空格、Tab、回车等空白字符时,会停止输入。

getline和fgets

用法

  • getline是C++中的标准库函数,用于从输入流中读取一行数据。例如:getline(cin, str);,其中cin表示输入流对象,str表示要存储读取的数据的字符串变量。

  • fgets是C语言中的标准库函数,用于从输入流中读取一行数据。例如:fgets(buf, sizeof(buf), stdin);,其中buf表示要存储读取的数据的字符数组,sizeof(buf)表示字符数组的大小,stdin表示输入流对象。

区别

  • getline可以读取任意长度的字符串,不需要手动指定缓冲区的大小,而fgets需要手动指定缓冲区的大小,如果读取的数据长度超出了缓冲区的大小,就会出现缓冲区溢出的问题。

  • getline会自动忽略行末的换行符(),而fgets不会自动忽略行末的换行符,如果要去掉换行符,需要手动处理。

注意点

  • getlinefgets都可以读取带有空格的字符串,但是读取字符串时需要注意缓冲区的大小,防止缓冲区溢出。

  • getlinefgets都可以读取特殊字符,如空格、制表符、回车等,但是读取回车时需要注意,因为回车符可能会留在输入缓冲区中,从而影响下一次输入操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值