设为首页 加入收藏

TOP

15.1.4 流式输入(1)
2013-10-07 15:35:17 来源: 作者: 【 】 浏览:63
Tags:15.1.4 流式 输入

15.1.4  流式输入(1)

输入流为结构化数据和非结构化数据的读入提供了简单方法。本节以cin为例讨论了输入技术,cin即控制台输入流。

1. 输入基本概念

通过输入流,可以采用两种简单方法来读取数据。第一种方法类似于<<运算符,向输出流输出数据。读入数据对应的运算符是>>。通过>>从输入流读入数据的时候,通过代码中提供的变量保存接受的值。例如,以下程序从用户那里读入一个单词,并将这个单词保存在一个字符串中。然后这个字符串又被输出到控制台:

  1. string userInput;  
  2. cin >> userInput;  
  3. cout << "User input was " << userInput << endl;  
  4.  
  5. 代码取自Input\string.cpp  

默认情况下,>>运算符根据空白符对输入值标志化。例如,如果一个用户运行以上程序并且键入hello there作为输入,那么只有第一个空白字符(在这个例子中为空格符)之前的字符才会被捕捉在userInput变量中。输出如下所示:
  1. User input was hello 

在输入中包含空白字符的一种方法是使用get(),本章后面会讨论这个方法。

>>运算符可以用于不同的变量类型,就像<<运算符一样。例如,如果要读取一个整数,那么只有变量类型的区别:

  1. int userInput;  
  2. cin >> userInput;  
  3. cout << "User input was " << userInput << endl;  
  4.  
  5. 代码取自Input\int.cpp  

通过输入流可以读入多个值,而且可以根据需要混合和匹配类型。例如,下面这个函数摘选自一个餐馆预订系统,这个函数要求用户输入姓以及聚会就餐的人数:
  1. void getReservationData()  
  2. {  
  3. string guestName;  
  4. int partySize;  
  5. cout << "Name and number of guests: ";  
  6. cin >> guestName >> partySize;  
  7. cout << "Thank you, " << guestName << "." << endl;  
  8. if (partySize > 10) {  
  9. cout << "An extra gratuity will apply." << endl;  
  10. }  
  11. }  
  12.  
  13. 代码取自Input\getReservationData.cpp  

注意,>>运算符会根据空白字符符号化,因此getReservationData()函数不允许输入带有空白字符的姓名。一个解决方法是使用本章后面讲解的unget()方法。注意,尽管这里使用cout的时候没有通过endl或flush()显式地刷新缓存区,但是仍然可以将文本写入控制台,因为这里使用的cin立即刷新了cout缓存区;cin和cout通过这种方式连接在一起。

如果分不清<<和>>的作用,只要联想箭头的方向指向它们的目标即可。在输出流中,<<指向流本身,因为数据被发送至流。在输入流中,>>指向变量,因为数据被保存。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇15.1.4 流式输入(2) 下一篇15.1.3 流式输出(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)