zoukankan      html  css  js  c++  java
  • 日常笔记4关于cin、cin.get()、cin.getline()、getline()使用区别

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

    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11781506.html
Copyright © 2011-2022 走看看