1.关于PAT中段错误

使用字符数组出现错误:

char str[256];

报错段错误,然后改用C++中的string

改成:

string str;

同char数组一样,也可以使用下标来取单个字符

但是还有区别就是,判断字符长度

char str[256],使用int len = strlen(str);

string str,使用int len = str.length();

2.关于输入cin、cin.get()、cin.getline()、getline()使用

前言

在做PATB1033 旧键盘打字(20分)时,有一个答案错误一直没有解决

只拿了19分,百思不得其解

然后我把cin >> str;换成getline(cin, str);问题解决

cin.getline()和getline()是两回事。

cin.getline()是在#include

而getline(cin,str)用法:接收一个字符串,可以接收空格并输出,需包含“#include ”

1. cin

结束条件:[enter],[space],[tab]

处理方法:cin遇到缓冲区中的[enter],[space],[tab]会结束当前输入,

并舍弃[enter],[space],[tab],继续下一项输入,

当有连续[space],[enter,[tab]会全部舍弃。

2. cin.get()

用法1: a = cin.get()或者cin.get(a)

结束条件:输入字符足够后,回车,意思是只有当满足输入条件后的字符数,

然后回车才会结束。[enter],[space],[tab]不会被舍弃。

说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中

用法2:cin.get(arrayname,size) 把字符输入到arrayname中,长度不超过size

注释:arrayname必须是char[]类型,即char数组类型,不可以为string类型;size是指输入长度,即允许输入的最大长度。

处理方法:假设把数据输入到 char a[arraylength],数组长度为arraylength。cin.get(a,size)---size,arraylength不同可以分为四类:

用法3:用法:cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束

注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃

#include<iostream>
using namespace std;
int main(){
int i;
char a[10];
cin.get(a,10,'.');
cout<<a;
}

3. cin.getline()

cin.getline()的用法和cin.get()用法大致相同,没有一参数用法,只有二参数,三参数两类

cin.gerline(arrayname,size)

cin.getline(arrayname,size,s)用法与cin.get()效果大致相同,但也有些区别

(1)cin.getline(arrayname,size)与cin.get(arrayname,size)的区别

cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]

cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]

4. getline(cin,str)

用法:接收一个字符串,可以接收空格并输出,需包含“#include”

#include<iostream>
#include<string>
using namespace std;
main (){
string str;
getline(cin,str);
cout<<str<<endl;
}

5. 注意的问题

1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

str="\n";

getline(cin,str);

的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

最新文章

  1. 用Go实现的简易TCP通信框架
  2. [PHP]swoole_server几个进程的分工
  3. iOS 8 界面设计 PSD 模板(iPhone 6),免费下载
  4. c++ template怎么使用及注意事项
  5. 使用virtualenv或zc.buildout创建Python-tornado分离环境
  6. SqlHelper 帮助文档及详解--项目初步搭建
  7. analytics.js
  8. 使IE6支持:hover效果
  9. Tengine笔记2:通过IP、域名、端口实现虚拟主机
  10. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
  11. webapi中Route标签定义可选参数
  12. Linux系统下用户与组的管理
  13. [Luogu 1730]最小密度路径
  14. 第15章 时间常数字符串比较 - IdentityModel 中文文档(v1.0.0)
  15. FastAdmin笔记~
  16. spring boot 之 Mybatis 配置
  17. canvas-4createPattern.html
  18. python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】
  19. jQuery UI练习
  20. vuex里mapState,mapGetters使用详解

热门文章

  1. linux 文件详细信息
  2. torch_13_自定义数据集实战
  3. Codekicker.BBCode(BBCode 和 HTML 互转的插件)介绍
  4. K8S集群集成harbor(1.9.3)服务并配置HTTPS
  5. Zabbix 监控阿里云RDS
  6. Prometheus K8S中部署Alertmanager
  7. 『CSP2019初赛后的总结』
  8. Microsoft.Practices.Unity
  9. IIS 503错误解决办法 HTTP Error 503
  10. PHP 日历函数手册