get( )与getline( )区别

get与getline区别不是很大,但一个明显的区别是get遇到 ‘\n ‘字符后便返回,这是 ‘\n ‘还在缓冲区中,所以下次读出来的将是 ‘\n ‘,而getline遇到 ‘\n ‘也返回,但它会把 ‘\n ‘从缓冲区里移除掉 所以很多时候用getline方便些

cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,比如:

#include <iostream>using std::cin;using std::cout;const int SIZE = 15;int main( ){cout << "Enter your name:";char name[SIZE];cin.get(name,SIZE);cout << "name:" << name;cout << "\nEnter your address:";char address[SIZE];cin.get(address,SIZE);cout << "address:" << address;}

在这个例子中,cin.get()将输入的名字读取到了name中,并将由Enter生成的换行符‘\n‘留在了输入队列(即输入缓冲区)中,因此下一次的cin.get()便在缓冲区中发现了‘\n‘并把它读取了,最后造成第二次的无法对地址的输入并读取。解决之道是在第一次调用完cin.get()以后再调用一次cin.get()把‘\n‘符给读取了,可以组合式地写为cin.get(name,SIZE).get();。

cin.getline()每次读取一整行并把由Enter键生成的换行符抛弃,如:

#include <iostream>using std::cin;using std::cout;const int SIZE = 15;int main( ){cout << "Enter your name:";char name[SIZE];cin.getline(name,SIZE);cout << "name:" << name;cout << "\nEnter your address:";char address[SIZE];cin.get(address,SIZE);cout << "address:" << address;}

由于由Enter生成的换行符被抛弃了,所以不会影响下一次cin.get()对地址的读取。

不过有一个全局的getline,注意不是basic_istream的getline,其原型为

getline(basic_istream,   string)

这个函数很好用

可以这样

string   str;

getline(cin,   str);

时间: 2024-10-10 12:27:19

get( )与getline( )区别的相关文章

cin.get(),cin.getline(),getline()区别

C++中有两个getline函数,这两个函数分别定义在不同的头文件中 1.getline()是定义在<string>头文件中,功能是取一行字符串,读到换行符r结束,并且抛弃换行符,如果需要读取字符,则接着下一行读取. getline(cin,str);第一个参数是输入流对象,第二个参数是字符串对象,该函数将istream参数作为返回值.如while(getline(cin, line)) 2.cin.getline()是cin的一个成员函数,定义在<iostream>头文件中,该函

C++中getline被跳过

#include "stdafx.h" #include"iostream" #include"math.h" #include"stdio.h" #include"cstdlib" #include"string" #include"cstring" using namespace std; #define Max 20 struct player { string

C++ 中字符串标准输入的学习及实验

声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. 1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 char p[100]; 7 char q[100]; 8 cin>>p; 9 cout<<p; 10 cin>>q; 11 cout<<q; 12 return

C++中的字符串输入输出

转自:https://www.cnblogs.com/zzw1024/p/10502011.html 常见的输入问题:1.直接用cin输入(当然可以使用cout直接输出): 1)string s; cin >> s; //只接收回车键和空格前面所输入的字符!!!!! 一旦输入空格,cin将空格视为回车键,将会将后面的字符赋予后续有输入cin函数的变量中,如下面的a,故一定确保输入无空格!! 2)char a[10]; cin >> a; //同样,只接收回车键和空格前面所输入的字符

C++获取字符cin,getchar,get,getline的区别

原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5241544.html 1.cin>> 1)最常见的是获取输入的一个字符或数字,如 int a,b; cin>>a>>b: 注意:cin>>会自动过滤掉不可见字符(如空格 回车 tab等).若不想过滤掉空白字符,可以用noskipws流进行控制. 如下程序,没有过滤掉不可见字符,输入的空格字符存入了input[1]中,也可输出. 2)获取输入的字符串,可以用数

awk中next和getline的区别

先看下面的几行代码 [[email protected] ~]# cat a 1 2 3 4 5 6 7 8 [[email protected] ~]# awk '{print "$1="$1;getline;print "$2="$2}' a $1=1 $2=4 $1=5 $2=8 [[email protected] ~]# awk '{print "$1="$1;next;print "$2="$2}' a $1=1

getline()和get()的使用区别

一.getline和get()的使用区别: 首先这两个函数都读取下一行输入,直到到达换行符:但是getline()函数会丢弃换行符,而get()将换行符保留在输入序列中 二.getline()函数的使用方法: getline()函数读取整行,它使用通过回车输入的换行符来确定输入结尾.要调用这种方法,可以使用cin.getline().该函数有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数.同时getline()成员函数在读取指定数目的字符或遇到换行符时停止读取. #

cin, getline() 与 get() 的区别

cin, getline() 与 get() 的区别 由于cin使用空白(空格,制表符,换行符)来确定字符串结束位置 所以我们在面对一些有包含空格的字符串输入时,cin就无能为力 我们可以使用getline()或者get()对字符串进行输入,但是这两者有什么区别呢? 1.getline() getline()函数通过回车键输入的换行符来确定输入的结尾,并将换行符丢弃 这个函数有两个参数,一个是用来存储输入行的数组名称,一个是获取的字符数目. 例如getline(name,20) 是将字符数目20

fstream 存取文件以及get()和getline()的区别

取自C++编程思想的源码 require.h 一些小的内联函数 1: #ifndef REQUIRE_H 2: #define REQUIRE_H 3: #include <cstdio> 4: #include <cstdlib> 5: #include <fstream> 6:   7: inline void require(bool requirement, 8: const char* msg = "Requirement failed")