C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

学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:最基本,也是最常用的用法,输入一个数字:

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

输入:2[回车]3[回车]
输出:5

注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制

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

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

输入:jkljkljkl
输出:jkljkljkl

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

2、cin.get()

用法1: cin.get(字符变量名)可以用来接收字符

#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cin.get();               //或者cin.get(ch);
cout<<ch<<endl;
}

输入:jljkljkl
输出:j

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

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

输入:jkl jkl jkl
输出:jkl jkl jkl

输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'\0')

用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.

这个我还不知道怎么用,知道的前辈请赐教;

3、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

//延伸:
//cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
//当第三个参数省略时,系统默认为'\0'
//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

#include<iostream>
#include<string>
using namespace std;

main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
cin.getline(m[i],20);
}

cout<<endl;
for(int j=0;j<3;j++)
cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;

}

请输入第1个字符串:
kskr1

请输入第2个字符串:
kskr2

请输入第3个字符串:
kskr3

输出m[0]的值:kskr1
输出m[1]的值:kskr2
输出m[2]的值:kskr3

4、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

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

时间: 2024-12-02 11:19:21

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法的相关文章

基于C++ cin、cin.get()、cin.getline()、getline()、gets()函数的使用详解_C 语言

1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();  cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream> using namespace std; main () {    int a,b;    cin>>a>&g

Eclipse中如何终止循环cin的输出

Eclipse中, 使用CDT编写C++代码时, 循环(while)cin输入程序, 需要终止, 如: while (cin>>i) S.insert(i); Eclipse的终止方法是:   首先在输入数据框内, 使用回车(Enter) -> 再终止(terminate)程序, 即输出结果. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/ 以上是小编为您精心准备的的内容,在的博客.问答.公众号

写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

//写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数. /*思路: */ #include <iostream> #include <string> using namespace std; int Find(string str_long,string str_short) { if(str_long.length()<str_short.length()) { cout<<"error"<<endl;return 0

时间类型的转换,SQL中CONVERT转化函数的用法

函数|转换 SQL中CONVERT转化函数的用法 格式:CONVERT(data_type,expression[,style]) 说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到. 例子:SELECT CONVERT(varchar(30),getdate(),101) now结果为:now---------------------------------------|09/15

Sybase ASA中查询元信息的几个常用SQL函数

Sybase ASA中查询元信息的几个常用SQL函数: sp_column_privileges Unsupported sp_columns table-name [, table-owner ] [, table-qualifier] [, column-name] 返回指定列的数据类型 sp_databases Unsupported sp_datatype_info Unsupported sp_fkeys pktable_name [, pktable-owner][, pktable

Java中split()函数和trim()函数的用法

split()函数是根据参数如",", "-", " "等, 分割String字符串, 返回一个String的数组(String[]), 可以通过索引指定元素. 如果未找到, 则返回整个String字符串, 作为String数组(String[])的第0个元素. trim()函数是去掉String字符串的首尾空格; 代码: /** * @author Spike * @time 2014.4.25 */ public class Split {

Excel中IsDate函数的用法

一.IsDate 函数语法 IsDate函数功能:返回 Boolean 值,指出一个表达式是否可以转换成日期. 语法 IsDate(expression) 必要的 expression 参数是一个 Variant,包含日期表达式或字符串表达式,这里的字符串表达式是可以作为日期或时间来认定的. 说明 如果表达式是一个日期,或可以作为有效日期识别,则 IsDate 返回 True;否则返回 False.在 Microsoft Windows 中,有效日期的范围介于公元 100 年 1 月 1 日与公

PHP中isset()和unset()函数的用法小结

 本篇文章主要是对PHP中isset()和unset()函数的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 isset (PHP 3, PHP 4, PHP 5 )   isset -- 检测变量是否设置   描述 bool isset ( mixed var [, mixed var [, ...]]) 如果 var 存在则返回 TRUE,否则返回 FALSE.   如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试

js中reverse函数的用法详解

 本篇文章主要是对js中reverse函数的用法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 reverse()方法用于颠倒数组中元素的顺序   注意:该方法会改变原来的数组,而不会创建新的数组.   例子:  var  str = ['1','2','3'];   document.write(a);   输出:3,2,1