C++:cin、cin.getline()、getline()的用法

主要内容:

1、cin用法

2、cin.getline()用法

3、getline()用法

3、注意的问题

一、cin>>

用法1:输入一个数字或字符

#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}

用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束

#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkljkl jkljkl       //遇空格结束
输出:jkljkl

二、cin.getline()

用法:接收一个字符串,可以接收空格并输出

#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}

输入:jkljkljkl
输出:jklj

接收5个字符到m中,其中最后一个为‘\0‘,所以只看到4个字符输出

如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl

输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf

延伸:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
2、当第三个参数省略时,系统默认为‘\0‘
3、如果将例子中cin.getline()改为cin.getline(m,5,‘a‘);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

三、getline()

用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”

#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl

四、注意的问题

1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

str="\n";
getline(cin,str);

的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

看下面一段程序:

/*-------------Basic Input/Output-------------*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main(){
    int age;
    //standard input(cin)
    cout<<"Please enter an integer value as your age: ";
    cin>>age;
    cout<<"Your ager is: "<<age<<".\n";
    //cin and string
    string mystr;
    cout<<"What‘s your name? "<<endl;
   mystr="\n";
    getline(cin,mystr);
    getline(cin,mystr);
    cout<<"Hello,"<<mystr<<".\n";
    char sex;
    cout<<"Please enter a F or M as your sex: ";
    cin>>sex;
    cout<<"Your sex is: "<<sex<<endl;
    cout<<"What‘s your favorite team? ";
    mystr="\n";
    getline(cin,mystr);
    getline(cin,mystr);
    cout<<"I like "<<mystr<<".\n";

system("pause");
    return 0;
}

运行结果为:

如果不添加红色代码,则运行结果为:

五、参考文献

http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html

C++:cin、cin.getline()、getline()的用法

时间: 2024-08-29 06:22:25

C++:cin、cin.getline()、getline()的用法的相关文章

cin.get(),cin.getline(),getline(),gets(),getchar()

----------------------- 1.cin.get() (1).cin.get()提取单个字符,可以提取回车.空格 a=cin.get(); (2)同(1) cin.get(a); (3). cin.get(字符数组,字符个数n,终止字符);//终止字符可以不写,默认为'\n' 或cin.get(字符指针,字符个数n,终止字符);//终止字符可以不写,默认为'\n' 不可跳过终止符号.需把回车'\n'提取掉 可以写成 cin.get(a,20); cin.get(); 也可以组合

C++ 中的 cin/cin.get()/cin.getline()/getline/getchar()

在C++中有关从终端中输入数据的函数的理解一直比较模糊,写在这里面来分享给大家,并且方便自己以后查阅. 我一般在写C++程序的时候都会在头文件中引入iostream, cstdio, cstring, cmath这几个文件,以便方便后面相关库内函数的应用.下面,将按照顺序介绍这些函数. 1. cin cin是从文件输入流中取出一个int/char/string等.最简单的用法是输入一个数字,即 #include <iostream> using namespace std; main () {

cin,cin.get(),cin.getline(),getline()

学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #includ

cin/cin.get()/cin.getline()/getline()/gets()/getchar()

1.cin>>    用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<a+b<<endl; } 输入:2[回车]3[回车] 输出:5 注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等) cin>>noskipws>>input[j];

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++获取字符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)获取输入的字符串,可以用数

getline函数的用法

函数声明 bool getline(istream &in, string &s) 功能说明: 从输入流读入一行到变量string s,及时是空格也可以读入. –直到出现以下情况为止: •读入了文件结束标志 •读到一个新行(有重载函数可以指定行分隔符,默认是"\n".) •达到字符串的最大长度 –如果getline没有读入字符,将返回false,可用于判断文件是否结束. 代码示例,复制文本文件. 1 int main(int argc,char* argv[]) 2 {

getchar()、putchar()、gets()、puts()、cin.get()、cin.getline()、getline()

1.getchar: 原型为int getchar(void). 它从stdin里读取一个字符.返回值为用户输入的ASCⅡ码,出错返回-1. eg:c=getchar(). 2.putchar: 原型为unsigned int putchar(char). 在stdout上输出一个字符.当输出正确的时候,返回输出字符转换为的unsigned int 值:当输出错误的时候,返回 EOF(End of file)文件结束符,即-1. eg:putchar(c). 3.gets: 原型为char* g

cin.getline()与getline()

C++中有两个getline函数, cin.getline()与getline()  这两个函数相似,但是 这两个函数分别定义在不同的头文件中.   cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数 1.getline()是定义在<string>中的一个行数,用于输入一行string,以enter结束. getline()的原型是istream& getline ( istream &is , string &s

关于cin,getline一起出现无法正常输入的问题

int N; char c; int num=0; string s; cin>>N>>c; getline(cin,s,'\n'); for(int i=0; s[i]!='\0';i++) { num++; } cout<<num<<endl; 这时cin(输入流)的状态被标志为遇到文件结尾,如果不调用in.clear()或其他可以清除流的状态的函数来将清除cin的状态,则cin被标志为遇到文件结尾的状态一起保持.到第二个 getline(cin, li