当前位置: 首页 > 编程笔记 >

C++编程中用put输出单个字符和cin输入流的用法

宓博实
2023-03-14
本文向大家介绍C++编程中用put输出单个字符和cin输入流的用法,包括了C++编程中用put输出单个字符和cin输入流的用法的使用技巧和注意事项,需要的朋友参考一下

用C++流成员函数put输出单个字符
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区。有时用户还有特殊的输出要求,例如只输出一个字符。ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put。如:

  cout.put('a');


调用该函数的结果是在屏幕上显示一个字符a。put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式)。如

  cout.put(65 + 32);


也显示字符a,因为97是字符a的ASCII代码。

可以在一个语句中连续调用put函数。如:

  cout.put(71).put(79).put(79). put(68).put('\n');


在屏幕上显示GOOD。

[例] 有一个字符串"BASIC",要求把它们按相反的顺序输出。

#include <iostream>
using namespace std;
int main( )
{
  char *a="BASIC";//字符指针指向'B'
  for(int i=4;i>=0;i--)
   cout.put(*(a+i));         //从最后一个字符开始输出
  cout.put('\n');
  return 0;
}

运行时在屏幕上输出:

CISAB

除了使用cout.put函数输出一个字符外,还可以用putchar函数输出一个字符。putchar函数是C语言中使用的,在stdio.h头文件中定义。C++保留了这个函数,在iostream头文件中定义。

[例] 也可以改用putchar函数实现。

#include <iostream> //也可以用#include <stdio.h>,同时不要下一行
using namespace std;
int main( )
{
  char *a="BASIC";
  for(int i=4;i>=0;i--)
   putchar(*(a+i));
  putchar('\n');
}

运行结果与前相同。

成员函数put不仅可以用cout流对象来调用,而且也可以用ostream类的其他流对象调用。


C++ cin输入流详解
标准输入流是从标准输入设备(键盘)流向程序的数据。在头文件iostream.h中定义了cin、cout、cerr、clog 4个流对象(详情请查看:与C++输入输出有关的类和对象),cin是输入流,cout、cerr、clog是输出流。

cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输入流中的空格、tab键、换行符等空白字符。

注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。需要注意保证从流中读取数据能正常进行。

例如:

  int a,b;
  cin>>a>>b;


若从键盘上输入

  21 abc↙


变量a从输入流中提取整数21,提取操作成功,此时cin流处于正常状态。但在变量b准备提取一个整数时,遇到了字母a,显然提取操作失败了,此时,cin流被置为出错状态。只有在正常状态时,才能从输入流中提取数据。

当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输入流cin就处于出错状态,即无法正常提取数据。此时对cin流的所有提取操作将终止。在 IBM PC及其兼容机中,以Ctrl + Z表示文件结束符。在UNIX和Macintosh系统中,以 Ctrl + D表示文件结束符。当输入流cin处于出错状态时,如果测试cin的值,可以发现它的值为false(假),即cin为0值。如果输入流在正常状态,cin的值为true(真),即cin为 一个非0值。可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。如:

  if(!cn) //流cin处于出销状态,无法正常提取数据
    cout<<"error";

[例] 通过测试cin的真值,判断流对象是否处于正常状态。

#include <iostream>
using namespace std;
int main( )
{
  float grade;
  cout<<"enter grade:";
  while(cin>>grade)//能从cin流读取数据
  {
   if(grade>=85) cout<<grade<<"GOOD!"<<endl;
   if(grade<60) cout<<grade<<"fail!"<<endl;
   cout<<"enter grade:";
  }
  cout<<"The end."<<endl;
  return 0;
}

流提取符“>>”不断地从流中提取数据(每次提取一个浮点数),如果成功,就陚给 grade,此时cin为真,若不成功则cin为假。如果键入文件结束符,表示数据已完。

运行情况如下:

enter grade: 67↙
enter grade: 89↙
89 GOOD!
enter grade: 56↙
56 fail!
enter grade: 100↙
100 GOOD!
enter grade: ^Z↙//键入文件结束符
The end.

在遇到文件结束符时,程序结束。如果某次输入的数据为

  enter grade: 100/2↙


流提取符">>"提取100,赋给grade,进行if语句的处理。然后再遇到"/",认为是无效字符,cin返回0。循环结束,输出"The end."。

在不同的C++系统下运行此程序,在最后的处理上有些不同。以上是在GCC环境下运行程序的结果,如果在VC++环境(笔者使用win7系统)下运行此程序,在键入Ctrl + Z 时,需要敲击两次回车,程序才输出"The end."。

 类似资料:
  • 在C语言中,我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在 C++语言中,C语言的这一套输入输出库我们仍然能使用,但是 C++ 又增加了一套新的、更容易使用的输入输出库。 【例1】简单的输入输出代码示例: 运行结果如下(↙表示按下回车键): Please input an int number: 8↙ The int number is x= 8 Please inpu

  • 通过前面的学习我们知道, C++ 程序中一般用 ostream 类的 cout 输出流对象和 << 输出运算符实现输出,并且 cout 输出流在内存中有相应的缓冲区。但有时用户还有特殊的输出需求,例如只输出一个字符,这种情况下可以借助该类提供的 put() 成员方法实现。 put() 方法专用于向输出流缓冲区中添加单个字符,其语法格式如下: ostream&put(char c); 其中,参数 c

  • 主要内容:C++输入流和输出流本教程一开始就提到,C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案: 使用 scanf()、gets() 等函数从键盘读取数据,使用 printf()、puts() 等函数向屏幕上输出数据; 使用 fscanf()、fgets() 等函数读取文件中的数据,使

  • 主要内容:字符串的输出,字符串的输入其实在《 C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符输出字符串,不能自动换行。除了字符串,printf() 还能输

  • 教学目标 了解怎样使用 C++ 面向对象的输入/输出流 能够格式化输入和输出 了解 I/O 流类的层次结构 了解怎样输入/输出用户自定义类型的对象 能够建立用户自定义的流操纵算子 能够确定/输出操作的成功与失败 能够把输入输出流连到输人流上

  • 本文向大家介绍C++字符数组的输入输出和字符串结束标志使用讲解,包括了C++字符数组的输入输出和字符串结束标志使用讲解的使用技巧和注意事项,需要的朋友参考一下 C++字符数组的输入输出 字符数组的输入输出可以有两种方法: 1) 逐个字符输入输出。 2) 将整个字符串一次输入或输出。例如有以下程序段: 在运行时输入一个字符串,如: 在内存中,数组str的状态如图5.9所示,在5个字符的后面自动加了一