iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ cin.get用法案例详解
  • 291
分享到

C++ cin.get用法案例详解

2024-04-02 19:04:59 291人浏览 八月长安
摘要

与字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。 例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个

字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。

例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个空格或回车符。除非用户输入了空格键、制表符之外的其他字符,否则程序将不可能通过 cin 语句继续执行(一旦输入了这样的字符,在程序可以继续下一个语句之前,仍然需要按回车键)。因此,要求用户“按回车键继续”的程序,不能使用 >> 运算符只读取按回车键的行为。

在这些情况下,cin 对象有一个名为 get 的内置函数很有帮助。因为 get 函数是内置在 cin 对象中的,所以可称之为 cin 的一个成员函数。get 成员函数读取单个字符,包括任何白色空格字符。如果程序需要存储正在读取的字符,则可以通过以下任意一种方式调用 get 成员函数。

在这两个例子中,假设 cin 是正被读入字符的 char 变量的名称:

cin.get (ch);
ch = cin.get();

如果程序正在使用 get 函数简单地暂停屏幕直到按回车键,并且不需要存储字符,则该函数也可以这样调用:

cin.get();

请注意,在所有这 3 个编程语句中,get 函数调用的格式实际上是一样的。首先是对象的名称,在此示例中它是 cin。然后是一个句点,其后是被调用的成员函数的名称,在这里当然就是 get。语句的末尾是一组括号和一个表示结束的分号。这是调用任何成员函数的基本格式,如图 1 所示。

成员函数调用的基本格式
图 1 成员函数调用的基本格式

下面的程序演示了使用 get 成员函数的所有 3 种方式:


// This program demonstrates three ways to use cin.get()
// to pause a program.
#include <iOStream>
using namespace std;

int main()
{
    char ch;
    cout << "This program has paused. Press Enter to continue.";
    cin.get(ch);
    cout << "It has paused a second time. Please press Enter again."; ch = cin.get();
    cout << "It has paused a third time. Please press Enter again.";
    cin.get();
    cout << "Thank you! \n";
    return 0;
}

程序输出结果:

This program has paused. Press Enter to continue.
It has paused a second time. Please press Enter again.
It has paused a third time. Please press Enter again.
Thank you!

注意,在 IDE 中运行程序时,当程序终止,则输出窗口会关闭,而 cin.get 函数可用于保持输出屏幕可见。

混合使用 cin>> 和 cin.get

将 cin >> 与 cin.get 混合使用可能会导致烦人且难以发现的问题。请看下面的代码段示例:


char ch;    //定义一个字符变量
int number; //定义一个整型变量
cout << "Enter a number: ”;
cin >> number;   // 读取整数
cout << "Enter a character: ";
ch = cin.get() ;   // 读取字符
cout << "Thank You!\n";

这些语句允许用户输入一个数字,而不是一个字符。看来第 6 行的 cin.get 语句已经被跳过了。这是因为 cin>> 和 cin.get 使用略有不同的技术来读取数据。

在示例代码段中,当执行第 4 行时,用户输入一个数字,然后按回车键。假设输入的是数字 100。按回车键会导致一个换行符('\n')存储在键盘缓冲区数字 100 之后,如图 2 所示。

键盘缓冲区存储和读取示意图
图 2 键盘缓冲区存储和读取示意图

当第 4 行中的 cin>> 语句读取用户输入的数据时,它会在遇到换行符时停止。换行字符未被读取,而是仍保留在键盘缓冲区中。从键盘读取数据的输入语句只在键盘缓冲区为空时等待用户输入值,但现在不为空。

当第 6 行中的 cin.get 函数执行时,它开始从先前输入操作停止的键盘缓冲区读取,并发现了换行符,所以它无须等待用户输入另一个值。这种问题最直接的解决办法是使用 cin.ignore 函数。

到此这篇关于c++ cin.get用法案例详解的文章就介绍到这了,更多相关C++ cin.get用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++ cin.get用法案例详解

本文链接: https://www.lsjlt.com/news/134158.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ cin.get用法案例详解
    与字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。 例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个...
    99+
    2022-11-12
  • C++ template用法案例详解
    有必要记一下这种一眼看上去就很高级的用法。还是编程不够多。都没用过这个。 相信用过c++的人,即便没用过,也肯定都听说过模板类这个词。嗨不巧了,今天讲的就是模板类。 模板是c++支持...
    99+
    2022-11-12
  • C# Console.WriteLine()用法案例详解
    以前用Console.WriteLine()的时候就只会用它直接输出string字符串,但后来发现它还有其它在有些场合下会十分方便的输出方法,这篇就记录一下这些方法的使用吧。 代码格...
    99+
    2022-11-12
  • C++ ostream用法案例详解
    概述 在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直...
    99+
    2022-11-12
  • C# Request.Form用法案例详解
    在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得: siteInfo.FZJGID = DropDownList_site...
    99+
    2022-11-12
  • C# DialogResult用法案例详解
    在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理。比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这...
    99+
    2022-11-12
  • C# pictureBox用法案例详解
    PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图象,则裁剪图象以适应控件的大小。 本文利用...
    99+
    2022-11-12
  • C++ GetDlgItem用法案例详解
    GetDlgItem的用法小结 GetDlgItem用于获得指定控件ID的窗体指针,函数原型如下: HWND GetDlgItem( HWND hDlg, int nI...
    99+
    2022-11-12
  • C++ odr用法案例详解
    // The main module. File: odr_test1.cpp #include <iostream> void module1_print...
    99+
    2022-11-12
  • C++ CopyFile,MoveFile用法案例详解
    1.含义 CopyFile(A, B, FALSE);表示将文件A拷贝到B,如果B已经存在则覆盖(第三参数为TRUE时表示不覆盖) MoveFile(A, B);表示将文件A移动到B...
    99+
    2022-11-12
  • C++中inline用法案例详解
    1 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数,栈空间就是指放置程序的局...
    99+
    2022-11-12
  • C++ pair的用法案例详解
    一、介绍 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair。当然你也可以自定义一个结构体struct。不过大家都是为了方便,所以就直接用pair了。 pair...
    99+
    2022-11-12
  • C++ random_shuffle()方法案例详解
    假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。 首先,做格式化时,结果...
    99+
    2022-11-12
  • C# DateTime.Compare()方法案例详解
    C#中的DateTime.Compare()方法用于比较两个DateTime实例。它返回一个整数值, <0-如果date1早于date2 0-如果date1与...
    99+
    2022-11-12
  • C# InitializeComponent()方法案例详解
    在每一个窗体生成的时候,都会针对于当前的窗体定义InitializeComponent()方法,该方法实际上是由系统生成的对于窗体界面的定义方法。 //位于.cs文件之中的Ini...
    99+
    2022-11-12
  • C++ atoi()函数用法案例详解
    目录1 功能2 格式3 注意事项3.1 关于参数的注意事项3.2 关于返回值的注意事项3.3 判断转换是否成功4 宽字符的转换1 功能 atoi()函数将数字格式的字符串转换为整数类...
    99+
    2022-11-12
  • C++ assert()函数用法案例详解
    1. 简介 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。 原型定义: #include <assert.h&...
    99+
    2022-11-12
  • C# SaveFileDialog与OpenFileDialog用法案例详解
    1.OpenFileDialog private void btnOpen_Click(object sender, EventArgs e) { ...
    99+
    2022-11-12
  • C++ seekg函数用法案例详解
    C++ seekg函数用法详解 很多时候用户可能会这样操作,打开一个文件,处理其中的所有数据,然后将文件倒回到开头,再次对它进行处理,但是这可能有点不同。例如,用户可能会要求程序在数...
    99+
    2022-11-12
  • C语言 CRITICAL_SECTION用法案例详解
          很多人对CRITICAL_SECTION的理解是错误的,认为CRITICAL_SECTION是锁定了资源,其实,CRITICAL_SECTI...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作