设为首页 加入收藏

TOP

4.2.4 每次读取一行字符串输入(1)
2013-10-07 15:38:04 来源: 作者: 【 】 浏览:81
Tags:4.2.4 每次 读取 一行 字符串 输入

4.2.4  每次读取一行字符串输入(1)

每次读取一个单词通常不是最好的选择。例如,假设程序要求用户输入城市名,用户输入New York或Sao Paulo。您希望程序读取并存储完整的城市名,而不仅仅是New或Sao。要将整条短语而不是一个单词作为字符串输入,需要采用另一种字符串读取方法。具体地说,需要采用面向行而不是面向单词的方法。幸运的是,istream中的类(如cin)提供了一些面向行的类成员函数:getline( )和get( )。这两个函数都读取一行输入,直到到达换行符。然而,随后getline( )将丢弃换行符,而get( )将换行符保留在输入序列中。下面详细介绍它们,首先介绍getline( )。

1.面向行的输入:getline( )

getline( )函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline( )。该函数有两个参数。第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数。如果这个参数为20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。getline( )成员函数在读取指定数目的字符或遇到换行符时停止读取。

例如,假设要使用getline( )将姓名读入到一个包含20个元素的name数组中。可以使用这样的函数调用:

 

这将把一行读入到name数组中-如果这行包含的字符不超过19个。(getline( )成员函数还可以接受第三个可选参数,这将在第17章讨论。)

程序清单4.4将程序清单4.3修改为使用cin.getline( ),而不是简单的cin。除此之外,该程序没有做其他修改。

程序清单4.4  instr2.cpp

 
下面是该程序的输出:
 
该程序现在可以读取完整的姓名以及用户喜欢的甜点!getline( )函数每次读取一行。它通过换行符来确定行尾,但不保存换行符。相反,在存储字符串时,它用空字符来替换换行符(参见图4.5)。
 
图4.5  getline( )读取并替换换行符
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.2.4 每次读取一行字符串输入(2.. 下一篇4.1.3 C++11数组初始化方法

评论

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

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)