输入流类(istream)常用成员函数

C++标准库里有针对外设输入操作进行处理的类——istream。而常用的cin则是istream的类对象。因此实际上我们可以重新定义新的输入流对象代替cin对输入进行操作。而我们常用的istream类成员函数有如下一些:

istream类

istream::getline() 函数

原型:istream& getline (char* s, streamsize n, char delim )
提取一行的字符串,s 是存储数据的变量的名字,n为输入数据的长度,delim为结束的标志字符(遇到就结束,不理会数据有多长,可以不要)

  char name[256];

  std::cout << "Please, enter your name: ";
  std::cin.getline (name,256);
  std::cout << "Hell0, " << name;
NOTE: cin.getline()与getline()是不同的, getline()的原型是istream& getline ( istream &is , string &str , char delim ),使用前必须包含头文件,其使用例子如下(同样,delim可不写,则默认为回车结束):
string line;

cout << "please cin a line:" << endl;
getline(cin,line,'#');
cout << "The input line is:" << line;

istream::ignore() 函数

原型:istream& ignore (streamsize n = 1, int delim = EOF)
忽略输入流中的n个字符,或者当遇到输入流中有一个值等于delim时停止忽略并返回。

char first[10], last[10];
cin >> first;
cin.ignore(256, '\0');
cin >> last;
cout << endl << first << endl << last << endl;

istream::get() 函数

get()的主要函数原型有以下三种:
1). int get();
从指定的输入流中读入一个字符(包括空白字符);遇到输入流中的文件结束符时,此get函数返回EOF;

char ch;
ch = cin.get();
cout << ch << endl;

2). istream& get (char& c);
从输入流读取一个字符(包括空白字符),并将其存储在字符变量 c 中。事实上get(char& c)与get( )作用基本相同;

char ch;
cin.get(ch);
cout << ch << endl;

3). istream& get (char* s, streamsize n, char delim = ‘\n’);
从输入流中读取n-1个字符,存于字符指针 s指向的内存。如果在读取n-1个字符之前遇到指定的终止字符delim,则提前结束读取。程序会自动在字符串最后增加一个’\0’表示结束;

char *s;
cin.get(s, 18, '\#');
if(s[17] == '\0')
    cout << s << endl;

peek() 函数

原型:int peek();
该函数用于查看输入流当中的下一个字符,但不会将它取出(即它仍在输入流当中)。字符指针仍停留在原来位置上;

char s[20], ch;
int count=0;
while(cin.get(ch))
{
    s[count]=ch;
    count++;
    if(cin.peek() == '\n')
        break;
}

putback() 函数

原型:istream& putback (char c);
把一个字符放回输入流当中;可用于检查用get()确定数据的开头后将其放回然后再操作。

read() 函数

原型:istream& read (char* s, streamsize n);
该函数只是纯粹的提取输入流的n长度的数据段并保存在s中,它不会检查s的内容也不会在末尾增加null字符(‘\0’)。如果提取过程中失败,s保存之前提取的内容,且eofbit以及failbit置1。

gcount 函数

原型:streamsize gcount() const;
统计最后一次非正规操作读取的字符数,非正规操作(即除>>外其他读入输入流数据的操作,如:get, getline, ignore, peek, read, readsome, putback and unget等);

char str[20];
cout << "Please, enter a word: ";
cin.getline(str,20);
cout << cin.gcount() << " characters read:" << str << '\n';

参考链接:
http://www.cplusplus.com/reference/istream/istream/

  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值