程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C++編程中的文件流與字符串流

詳解C++編程中的文件流與字符串流

編輯:關於C++

詳解C++編程中的文件流與字符串流。本站提示廣大學習愛好者:(詳解C++編程中的文件流與字符串流)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C++編程中的文件流與字符串流正文


eof 函數

eof是end of file的縮寫,表現“文件停止”。從輸出流讀取數據,假如達到文件末尾(遇文件停止符),eof函數值為非零值(真),不然為0(假)。

[例] 逐一讀入一行字符,將個中的非空格字符輸入。

#include <iostream>
using namespace std;
int main( )
{
  char c;
  while(!cin.eof( )) //eof( )為假表現未碰到文件停止符
  if((c=cin.get( ))!=' ') //檢討讀入的字符能否為空格字符
   cout.put(c);
  return 0;
}

運轉情形以下:

C++ is very interesting.↙
C++isveryinteresting.
^Z(停止)



peek函數

peek是“不雅察”的意思,peek函數的感化是不雅測下一個字符。其挪用情勢為:

  c=cin.peek( );


函數的前往值是指針指向確當前字符,但它只是不雅測,指針仍逗留在以後地位,其實不後移。假如要拜訪的字符是文件停止符,則函數值是EOF(-1)。
putback函數

其挪用情勢為

  cin.putback(ch);


其感化是將後面用get或getline函數從輸出流中讀取的字符ch前往到輸出流,拔出到以後指針地位,以供前面讀取。

[例] peek函數和putback函數的用法。

#include <iostream>
using namespace std;
int main( )
{
  char c[20];
  int ch;
  cout<<"please enter a sentence:"<<endl;
  cin.getline(c,15,'/');
  cout<<"The first part is:"<<c<<endl;
  ch=cin.peek( ); //不雅看以後字符
  cout<<"The next character(ASCII code) is:"<<ch<<endl;
  cin.putback(c[0]); //將'I'拔出到指針所指處
  cin.getline(c,15,'/');
  cout<<"The second part is:"<<c<<endl;
  return 0;
}

運轉情形以下:

please enter a sentence:
I am a boy./ am a student./↙
The first part is:I am a boy.
The next character(ASCII code) is:32(下一個字符是空格)
The second part is:I am a student

ignore函數

其挪用情勢為

  cin.ignore(n, 終止字符)


函數感化是跳過輸出流中n個字符,或在碰到指定的終止字符時提早停止(此時跳過包含終止字符在內的若干字符)。如
 

  ighore(5, 'A') //跳過輸出流中個字符,遇'A'後就不再跳了


也能夠不帶參數或只帶一個參數。如

  ignore( ) // n默許值為,終止字符默許為EOF


相當於

  ignore(1, EOF)

[例] 用ignore函數跳過輸出流中的字符。先看不消ignore函數的情形:

#include <iostream>
using namespace std;
int main( )
{
  char ch[20];
  cin.get(ch,20,'/');
  cout<<"The first part is:"<<ch<<endl;
  cin.get(ch,20,'/');
  cout<<"The second part is:"<<ch<<endl;
  return 0;
}

運轉成果以下:

I like C++./I study C++./I am happy.↙
The first part is:I like C++.
The second part is:(字符數組ch中沒有從輸出流中讀取有用字符)

假如願望第二個cin.get函數能讀取"I study C++.",就應當想法跳過輸出流中第一個'/',可以用ignore函數來完成此目標,將法式改成:

#include <iostream>
using namespace std;
int main( )
{
  char ch[20];
  cin.get(ch,20,'/');
  cout<<"The first part is:"<<ch<<endl;
  cin.ignore( );//跳過輸出流中一個字符
  cin.get(ch,20,'/');
  cout<<"The second part is:"<<ch<<endl;
  return 0;
}

運轉成果以下:

I like C++./I study C++./I am happy.↙
The first part is:I like C++.
The second part is:I study C++.

以上引見的各個成員函數,不只可以用cin流對象來挪用,並且也能夠用istream類的其他流對象挪用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved