getline()和get()
来源:互联网 发布:unity3d webgl 编辑:程序博客网 时间:2024/05/18 01:29
istream中的类如(cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行输入,直到到达换行符。然而,随后getline()将丢弃换行符,而get()将换行符保留在输入序列中。
getline
字符数组
getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。调用方法:cin.getline(name,size)
。该函数有两个参数,第一个参数表示数组名称,第二个表示字符数。getline()成员函数读取指定数目的字符或遇到换行符时停止读取。
字符串
调用方法:getline(cin,str)
get
与getline类似,然而为了解决换行符留在输入队列中的原因,可以使用以下写法解决。
cin.get(name,size).get()
空行和其他问题
当getline()或get()读取空行时,将发生什么情况?最初的做法是下一条输入语句将在前一条getline()或get()结束读取的位置开始时;但当前的做法是,当get()(不是getline())读取空行将设置失效位。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入:
cin.clear()
另一个潜在的问题是,输入字符串可能比分配的空间长。如果输入行包含的字符数比指定的多,则getline()和get()将把余下的字符留在输入队列中,而getline()还会设置失效位,并关闭后面的输入。
混合输入字符串和数字
void numstr(){ cout << "What year was your house built?\n"; int year; cin >> year; cout << "What is its street address?\n"; char address[80]; cin.getline(address, 80); cout << "Year built: " << year << endl; cout << "Address: " << address << endl; system("pause");}
用户根本没机会输入地址。当cin读取年份,将回车键生成的换行符留在了输入队列中。后面的cin.getline()看到换行符后,将认为是一个空行,并将一个空字符串赋给address数组。需要使用get()解决该问题。
strlen()
函数strlen()从数组的第一个元素开始计算字节数,直到遇到空字符。对于未被初始化的数据,第一个空字符出现的位置是随机的。
char charr[20];cout << strlen(charr) << endl;
0 0
- get()和getline()
- get()和getline()函数
- getline()和get()
- get和getline不同点
- C++ getline()和get()
- getline()和get()
- cin.get 和 cin.getline
- get和getLine的区别
- cin.getline()和cin.get()
- get和getline函数差别
- getline()和get()的区别
- cin>>和cin.get()和cin.getline()
- cin.get和cin.getline的区别?
- C++ 里面get和getline输入方法
- cin.get和cin.getline的区别?
- cin.get和cin.getline的区别
- Cin.get()和cin.getline()详解
- 关于get()和getline()
- Vue.js开发环境搭建-新建项目
- HTTP 报文介绍
- 在C#客户端用HTTP上传文件到Java服务器
- PHP的线程安全与非线程安全版本的区别
- POJ-----2549---Sumsets---二分
- getline()和get()
- Python 中的基本文件操作
- Linux环境下Weblogic部署应用的一些问题
- Servlet
- PCA原理
- a元素里面的图片与文字垂直和水平居中
- 几行代码绘制wordcloud词云
- 杭电--2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)
- springMvc访问简介