首页
学习
活动
专区
圈层
工具
发布

C++中cin的详细用法

当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!...比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。...); 2.2.1 cin.get读取一个字符 读取一个字符,可以使用cin.get或者cin.get(var),示例代码如下: #include using namespace...(2)cin.get(str,size);读取一行时,只能将字符串读入C风格的字符串中,即char*,但是C++的getline函数可以将字符串读入C++风格的字符串中,即string类型。...---- 5.其它从标准输入读取一行字符串的方法 5.1 getline读取一行 C++中定义了一个在std名字空间的全局函数getline,因为这个getline函数的参数使用了string字符串,所以声明在了

9.1K30

C++ 练气期之细聊字符串

1.2 存储结构 字符常量必须用单引号包起来,字符直接存储在变量中。 char myChar='A'; 字符串的存储方案比字符复杂很多,C++支持两种字符串的存储方案: C语言风格的存储。...因为cout底层逻辑在输出字符数组时,会以一个特定标识符\0为作为结束标志。cout在输出 myStr字符数组的数据时,如果没有遇到开发者提供的\0结束符号,则会在数组的存储范围之外寻找\0符号。...在使用字符常量赋值时,编译器会在字符串常量的尾部添加\0,再存储到数组中,所以数组的长度至少是:字符串常量的长度+1。...如果需要以行为单位进行输入时,可以使用: cin.get()方法。 cin.getline()方法。 上述 2 个方法主要用于字符串数组的赋值。 两者在使用时,都可以接受 2 个参数: 目标字符串。...原因是第一次接受用户输入后,cin.get缓存了用户输入的换行符。在第二次接受用户输入时,cin会首先检查缓存器中是否有数据,发现有换行符,直接结束输入。 解决方案,手动清除缓存器的数据。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++系列-第1章顺序结构-5-输入类cin

    main() 函数是程序的入口点。 程序使用 cout 来输出提示信息,要求用户输入两个整数。 程序使用 cin >> 来读取用户输入的整数,并将其存储在变量 num1 和 num2 中。...程序计算两个整数的和,并将其存储在变量 sum 中。 最后,程序使用 cout 来输出这两个整数的和。 这就是 cin 的基本用法。希望这个案例对你有所帮助! 1....,如果输入格式不正确或出现错误或异常,程序可能会抛出异常或读取失败。...这些案例展示了 cin 在 C++ 中的基本用法,帮助程序员从用户那里获取输入数据。...如果用户输入了一个有效的整数,程序会将其加到 sum 变量上。如果输入无效,程序会清除错误标志,忽略剩下的输入,并退出循环。最后,程序输出所有有效整数的和。

    61010

    C++ 中字符串标准输入的学习及实验

    声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1、cin>> cin使用空白(空格、制表符、回车)来确定字符串的结束位置。 cin会将换行符留在输入输出队列中。...2、面向行的输入cin.get()、cin.getline() 这两个函数都是cin的成员函数,功能都是读取一行,遇到换行符(回车)认为是字符串的结尾,不同的是getline()将换行符从输入队列中丢弃...cin.getline和cin.get的功能即可 3、getline()    使用时要#include  原型: istream& getline ( istream &is , string...对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为 '\n'(换行符)。函数在输入流is中遇到文件结束符(EOF)或者在读入字符的过程中遇到错误都会结束。...在遇到终结符delim后,delim会被丢弃,不存入str中。在下次读入操作时,将在delim的下个字符开始读入。

    1.7K50

    C++随记(一)---字符串数组的输入问题

    问题分析: cin使用空白(空格,制表符,换行)来确定字符串结束的位置!!!我的字符串Teeyo Huang中,包含了空格!...所以cin把前半部分当成了一个单独的字符串赋值给name数组,把后半部分Huang当成了一个单独的部分放在输入流中,待到下一个cin出现时,自动赋值给sex。...解决方案: 每次读取一行字符串输入,这样这一行的中间的任何空白都不会被认定为字符串结束的标志。...问题分析: cin.get()在读取我的Teeyo Huang时,并没有舍弃我最后敲的那下回车键,也就是换行符,而是把它留在了队列中, 这样我的下一个cin,get()出现时,又直接把换行符赋值给sex...这是因为 cin.get(name,20)返回一个cin对象,随后用cin对象来调用get()函数。 综上所述,一般推荐用cin.getline()来对字符串进行输入

    1.9K02

    自修C++PrimerPlus--第四章--复合类型

    \0的,但是这个字符串的结束标志就是\0,我们没有办法输入这个\0,那么这个cin如何判断这个字符串是不是结束了呢?...这个时候cin就是通过这个空白判断的,因此这个cin在获得这个字符数组的时候,实际上第一次只会读取到这个第一个空格前面的位置,然后在这个末尾加上\0存储到我们的这个name数组里面去,因为这个数组里面的内容是一个字符串...,我们就要知道这个问题的根源是在哪里,这个get读取两次的时候,就是因为这个缓存区里面有这个换行符,因此我们只需要解决掉这个换行符就可以了; 第一个操作就是,使用这个get调用之后,后面接上一个这个cin.get...但是这个getline在读取的时候会丢掉这个换行符,因此这个getline可以进行多次的输入; 当使用这个get函数的时候,会出现问题,但是我们也给除了这个解决的方案:就是可以加上这个额外的cin.get...就是为了吞掉这个换行符,也可以根据这个cin.get返回值就是cin对于这个get进行链式调用,只需要一行代码就解决这个问题; 其实这个cin.getline函数的返回值也是一个cin,这个也是可以连续调用的

    18900

    C++cin,cout以及常见函数总结,cin,cout格式化控制

    ,我们可以查看cin.operator >>的定义,它存在于istream头文件中,里面为>>符号定义了各种数据的处理方法,给大家看几个:           在不为人知的背后,C++替我们处理好了这一切...3.cin.get():  cin.get()有多种重载形式,就常用的来介绍: 第一种:接收一个字符  char a; a = cin.get(); // 或者写成cin.get(a); 都是可以的 ...)设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同unsetf(ios::state)终止已设置的输出格式状态,在括号中应指定内容 width()和fill()...unsetf(ios::state) 终止已设置的输出格式状态,在括号中应指定内容。 ...格式标志解释ios::left输出数据在本域宽范围内向左对齐ios::right输出数据在本域宽范围内向右对齐ios::internal数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充ios:

    2.9K10

    C++cin,cout以及常见函数总结,cin,cout格式化控制

    3.cin.get(): cin.get()有多种重载形式,就常用的来介绍: 第一种:接收一个字符 char a; a = cin.get(); // 或者写成cin.get(a); 都是可以的 第二种...::state) 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同 unsetf(ios::state) 终止已设置的输出格式状态,在括号中应指定内容 width...setf(ios::state)设置输出格式状态,括号中应给出格式标志,内容与控制符setiosflags括号中的内容相同。...unsetf(ios::state) 终止已设置的输出格式状态,在括号中应指定内容。...格式标志 解释 ios::left 输出数据在本域宽范围内向左对齐 ios::right 输出数据在本域宽范围内向右对齐 ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充

    2.3K60

    get, getline, gets, getchar 用法「建议收藏」

    (输入25个字符)   输出:abcdeabcdeabcdeabcd (接收19个字符+1个'  2、cin.get()   用法1: cin.get(字符变量名)可以用来接收字符...(接收19个字符+1个'\0')   用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目...这个我还不知道怎么用,知道的前辈请赐教;')   用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.   ...而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误; 6、getchar()   6、getchar() //接受一个字符,需包含“#include”...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    94020

    c++之复合类型笔记(一)

    数组 数组是一种数据格式,能够存储多个同类型的值。 数组的初始化规则: 1)数组只有在定义的时候才能使用初始化。 2)初始化数组的时候,提供的值可以少于数组的元素数目。...eg:short things[]={1,2,3,4}; int num_elements=sizeof things/sizeof(short);) 字符串 字符串是存储在内存的连续字节中的一系列字符...例如,假设要使用getline()将姓名读入到一个包含20个元素的name数组中,可以使用这样的函数调用: cin.getline(name,20); 对于代码2.1修改为cin.getline(),...但是get()还有另外一种变体,使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此它可以用来处理换行符,魏都区下一行做准备。...即 cin.get(name1,Size); cin.get(); cin.get(name2,Size);//正常读取 (注:无参数的cin.get()仅仅读取一个字符并在输入流中删除所读字符,不做其他任何操作

    66420

    C++ Primer Plus习题及答案-第六章

    习题选自:C++ Primer Plus(第六版) 内容仅供参考,如有错误,欢迎指正 ! 1.简单文件输入/输出(写入到文本文件中) 对于文件输入,C++使用类似于cout的东西。...而在使用读取文件时,需要包含fstream头文件,该头文件定义了ifostream类,在使用的时候需要声明一个ifstream类,通过open()方法与文件关联起来,然后就可以像使用cin一样使用该ifstream...第二个版本比第一个版本效率更高,因为在第一个中对于每个字符都需要判断两次,而在第二个版本中,如果字符为空格,在经过if判断确定为空格后,该字符肯定不是换行符,第二个else if的判断直接跳过,节省判断时间...而使用字符作为菜单选项和case标签,当用户输入错误类型,程序能正确通过default部分提示用户输入错误,用户体验更加友好,提高了程序的容错性和健壮性。...这些信息被存储在一个动态分配的结构数组中.每个数据结构有两个成员:用来存储姓名的字符串数组(或string对象)和用来存储款项的double成员。

    1.3K10

    C++:IO流

    使用 cin 进行标准输入即数据通过键盘输入到程序中 ,同时 C++ 标准库还 提供了 cerr 用来进行标准错误的输出 ,以及 clog 进行日志的输出 ,从上图可以看出, cout 、...在使用时候必须要包含文件并引入 std 标准命名空间。 注意: 1. cin 为缓冲流。 键盘输入的数据保存在缓冲区中,当要提取时,是从缓冲区中拿 。...;也就是变量默认值是0; 提取失败的话,变量的值就是0; 如果为了保证每次读取整形成功,那就可以使用cin.get()把字符去掉,否则字符会一直在缓冲区,影响后面的输入; if (cin.fail(...使用 sprintf() 函数 但是两个函数在转化时,都得 需要先给出保存结果的空间 ,那空间要给多大呢,就不太好界定, 而且 转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃 。...在程序中如果想要使用 stringstream ,必须要包含头文件 。

    63000

    使用cin进行输入

    单字符输入: 在使用char参数或没有参数的情况下,get()方法读取下一个输入字符,即使该字符是空格、制表符或换行符。...两者的主要特性如下: 特征 cin.get(ch) ch=cin.get() 传输输入字符的方法 赋给参数ch 将函数返回值赋给ch 字符输入时函数的返回值 指向istream对象的引用 字符编码(int...第二个参数比要读取的最大字符数大1(额外的一个字符用于存储结尾的空字符,以便将输入存储为一个字符串)。第3个参数指定用作分界符的字符,只有两个参数的版本将换行符用作分界符。...上述函数都在读取最大数目的字符或遇到换行符后为止】 例如: char line[50]; cin.get(line, 50);//cin.get( )函数将在到达第49个字符或遇到换行符(默认情况)后停止将输入读取到数组中...函数 功能描述 read() 读取指定数目的字节,并将它们存储在指定的位置中。与getline()和get()不同的是,read()不会在输入后加上空值字符。

    1.7K50

    C++ Primer Plus习题及答案-第九章

    只在当前源文件中使用的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源文件中说明和定义。...对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。 复习题 1. 对于下面的情况,应使用哪种存储方案? a. homer是函数的形参。...(3,6)函数时,它返回两个int参数平均值,在同一个程序的另一个文件中调用时,它返回两个int参数的double平均值。...: golf ann; setgolf(ann, "Ann Birdfree", 24); 上述函数调用提供了存储在ann结构中的信息。...可以这样使用其第二个版本: golf andy; setgolf(andy); 上述函数将提示用户输入姓名和等级,并将它们存储在andy结构中。这个函数可以(但是不一定必须)在内部使用第一个版本。

    47330

    C++ Primer Plus习题及答案-第十七章

    cout格式化输出 使用cin进行输入 文件的输入和输出 复习题 1. iostream文件在C++ I/O中扮演何种角色?...在宽度为15个字符的字段中显示每种形式,并将它们显示在同一行上,同时使用C++数基前缀。...使用cin >> ch;会自动忽略空格和换行符,因此ct1的值应为5。而cin.get(ch);不忽略空格和换行符,且第一次输入的回车键,也会被cin.get(ch);捕捉到,因此ct2的值应为9。...姓名将被存储在容器中,然后按顺序显示出来。 合并两个清单,删除重复的条目,并将结果保存在文件matnpat.dat中,其中每行为一个朋友。...由于string的数据是私有的,因此必须使用string类的方法来将数据存储到string对象中,而不能直接存储。

    3.6K30

    EasyC++10,字符串初体验

    这是EasyC++系列第10篇,我们来聊聊C++中的字符串。 字符串 字符串定义 字符串就是连续的一连串字符,在C++当中, 处理字符串的方式有两种类型。一种来自于C语言,也被称为C风格字符串。...C风格的字符串其实就是字符存储在char数组当中。不过它和一般的数组有一些区别,拥有一些特殊的性质。比如一空字符\0结尾,它的ascii码是0,用来标记字符串的结尾。...所以下面这种写法是错误的: char c = "S"; 并且“S”其实表示的是字符串所在的内存地址,当我们把一个内存地址赋值给一个char类型的时候自然就会报错了。...一个是int型的a,一个是字符串name。我们使用cin读入a,使用getline读入name。 这看起来一点问题也没有,但是当我们运行的时候就会出现问题。...这并不是C++有bug,而是我们在输入32的时候,敲了一个回车。所以在使用getline读入一行的时候,看到了回车,直接退出了,读入了一个空行,这就是为什么我们没有机会输入name的原因。

    91520

    从零开始学C++之IO流类库(一):流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作

    一、IO、流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空间的输入输出简称为串...I/O 数据输入输出的过程,可以形象地看成流 从流中获取数据的操作称为“提取”(输入)操作 向流中添加数据的操作称为“插入”(输出)操作 标准输入输出流 文件流 字符串流 二、流类库继承体系...、ios 类记录流状态,支持对streambuf 的缓冲区输入/输出的格式化或非格式化转换 stringbuf:使用串保存字符序列。...扩展 streambuf 在缓冲区提取和插入的管理 filebuf:使用文件保存字符序列。包括打开文件;读/写、查找字符 如下图: ?...//cout<<buf<<endl;     /*char c[10], c2, c3;     c2 = cin.get( );     c3 = cin.get( );     cin.putback

    2.2K00

    C++的输入输出特点、运算符重载及标准模板库STL

    注意:cin>>和cin.get()都残留数据不会出错,但是cin.getline会报错,下面的示例中都有体现。...1.3.3 cin.get() 存储变量类型:char。 输入结束条件:Enter键(因此可接受空格和Tab键)。 对结束符处理:不丢弃缓冲区中的Enter。...使用方法: ch=cin.get() 或 cin.get(ch) cin.get(数组名,长度,结束符): 结束符为可选参数,读入的字符个数最多为长度-1个,结束符规定结束字符串读取的字符,默认为...区别在于: cin.get()当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。...但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。 cin.getline()是以enter为结束标志的,同时丢弃了enter。

    1.1K20
    领券