1. 程式人生 > >C++中get和getline函式詳解

C++中get和getline函式詳解

get函式函式原型有多個,其中比較簡單的2個是:

char get();
istream &get(char c);

前者提取的字元作為函式值,後者提取的字元賦值給引數c,使用get函式從鍵盤提取自負的格式分別為:

cin.get();
cin.get(字元變數c);
#include<iostream>
using namespace std;
int main(){
    char ch;
    cout << "輸入字串: ";
    while((ch=cin.get())!=EOF)
        cout.put(ch);
    return 0;
}

window系統下EOF輸入為Ctrl+Z,MacOS系統下EOF為control+D。

函式getline()輸入一行字元,getline函式原型是:

istream &getline(char *buf, int n, char ch='\n');

功能是最多提取n-1個字元放在buf為首地址的緩衝區中,引數ch為終止符,隱含的終止符為換行符。

使用getline函式從鍵盤提取字串的格式為:

cin.getline(字元指標, 整數n, 終止界定符);

輸入字元少於n-1時,接受實際輸入的字元數,並將緩衝區的回車符清除,如輸入字元數不少於n-1時,多餘的字元及回車符留在緩衝區。該函式不能接受換行字元'\n'。

該函式終止讀取字元的條件為:

  1. 讀取n-1個字元
  2. 遇到引數指定的終止符
  3. 遇到檔案結束符(ctrl+Z)或回車符
#include<iostream>
using namespace std;
const int SIZE=80;
int main(){
    char buf[SIZE];
    int lcnt = 0, lmax = -1;
    cout << "輸入若干行字元:";
    while (cin.getline(buf, SIZE)) {  // 用ctrl+Z作為輸入流結束標誌
        int count = cin.gcount()-1;   // cin.gcount()的輸出為包含回車符的串長度
        lcnt++;
        if (count > lmax)
            lmax = count;
        cout << "line#" << lcnt << ": " << count << endl;
        cout.write(buf, count).put('\n').put('\n');
    }
    cout << endl;
    cout << "最長行字元數: " << lmax << endl;
    cout << "總行數: " << lcnt << endl;
    return 0;

相關推薦

C++getgetline函式

get函式函式原型有多個,其中比較簡單的2個是:char get(); istream &get(char c);前者提取的字元作為函式值,後者提取的字元賦值給引數c,使用get函式從鍵盤提取自負的格式分別為:cin.get(); cin.get(字元變數c);#in

C++,getgetline函式的區別

cin.getline()和cin.get()都是對輸入的面向行的讀取,即一次讀取整行而不是單個數字或字元,但是二者有一定的區別。 cin.get()每次讀取一整行並把由Enter鍵生成的換行符留在輸入佇列中,比如: #include <iostr

C++vectormap使用

    Map是c++的一個標準容器,她提供了很好一對一的關係,在一些程式中建立一個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作! 1. map最基本的建構函式;    map<string , int >mapstring;         map<int ,str

AJAXgetpost請求

一、get()和post()基本區別1.get 是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬

Lua日期時間函式

最近在做Lua指令碼的時候,用到了Lua的日期和時間函式,發現其功能強大,學習一下!在Lua中,函式time和data提供了所有的日期和時間的功能,下面將這兩個函式分開學習。 time函式: 如果不帶任何引數呼叫time,它會返回一個數字,表示當前的日期和時間,改數字為

C++佇列用法

1.C++棧用法詳解 堆疊是一個容器的改編,棧是限定僅在表尾進行插入或刪除操作的線性表,因此表尾端成為棧頂,相應的,表頭端成為棧底,不含有任何元素的棧稱為空棧。它實現了一個先進後出的資料結構(FILO

深入C#get與set的

釋一:屬性的訪問器包含與獲取(讀取或計算)或設定(寫)屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一: get {} set {}get 訪問器get 訪問器體與方法體相似。它必須返回屬性型別的值。執行 ge

C++關於get()getline()函式讀取行的問題

1. 面向行的輸入:getline()   getline()函式讀取整行(讀取格式為cin.getline()),它使用通過回車鍵輸入的換行符來確定輸入結尾。該函式有兩個引數,第一個引數是用來儲存輸入行的陣列名稱,第二個引數是要讀取的字元數。getline(

linuxalarm函式pause函式例項

轉載原文:https://www.cnblogs.com/yxk529188712/p/4982401.html alarm(time);執行之後告訴核心,讓核心在time秒時間之後向該程序傳送一個定時訊號,然後該程序捕獲該訊號並處理; pause()函式使該程序暫停讓出CPU,但是該函式的暫停

C語言itoa()函式atoi()函式(整數轉字元)

轉自:http://c.biancheng.net/cpp/html/792.html C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。 以下是用itoa()函式將整數轉換為字串的一個例子:# include <stdio.h># include

sql的round函式cast函式

 <一>:ROUND函式主要返回數字表達式並四捨五入為指定的長度或精度。 語法格式如下: ROUND(numeric_expression,length[,function]) 引數說明: 1.numeric_expression:精確數字或近擬數字資料型別類別的

Socketsend()函式recv()函式

1、send函式 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不論是客戶還是伺服器應用程式都用send函式來向TCP連線的另一端傳送資料。 客戶程式一般用send函式向伺服器傳送請求,而伺

Android StudioGitGitHub使用

可能 必須 窗口 gin 擁有 說明 詳細 對話 發現   一、Git和GitHub簡述    1.Git    分布式版本控制系統,最先使用於Linux社區,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分布式;  

C#的IDisposable模式用法

數據庫 nor 是否 entry block 記錄日誌 自定義 技術分享 ssa 本文實例講述了C#中IDisposable模式的用法,針對垃圾資源的回收進行了較為詳細的講解。分享給大家供大家參考之用。具體方法如下: 首先,對於垃圾回收而言,在C#中,托管資源的垃圾回收是

C#的Linq to Xml

image 查詢 學習 ebo ret 遞增 xdoc 裏的 事件 前言 我相信很多從事.NET開發的,在.NET 3.5之前操作XML會比較麻煩,但是在此之後出現了Linq to Xml,而今天的主人公就是Linq to Xml,廢話不多說,直接進入主題。 一、生

(三)GETPOST協議

str 打印 http 類別 多個 表現 pro 版本 prot 一、GET請求報文分析: 1、 請求行:   a) GET(描述該請求采用了什麽請求方法),HTTP協議中包含8種請求方法: GET 請求獲取Request-URI 所標識的資源 POST

C#GetPost請求的同步及異步方法

iter epo charset result string pty streambuf div httpget 在C#中發起Http請求一般使用HttpWebRequest這個類,下文將使用這個HttpWebRequest對象來對Get和Post的同步及異步請求進行封裝:

Linuxtopfree命令(轉)

機器 負載 選擇 就會 image 的區別 包括 linux中 占用內存 top:命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表. 該命令可以按CPU使用.內存使用和執行時間對任務進行排序; 而且該命令的很多特性都可以通過交互式命令或者在個

c++ minmax 函式

包含在c++標準庫中標頭檔案中,在標頭檔案<windows.h>中定義了min,max的巨集,若在包含的同時包含<windows.h>會導致函式無法使用。 <windows.h>提供了_cpp_min等函式來代替min函式的功能。 C++11標準:

mallocfree函式(轉載只是為了查閱方便,若侵權立刪)

malloc和free函式詳解   本文介紹malloc和free函式的內容。   在C中,對記憶體的管理是相當重要。下面開始介紹這兩個函式:     一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(lon