C 容易忽略的輸入輸出特性

2021-09-02 13:07:31 字數 2795 閱讀 5288

1 cin  cout cin.get() cin.get(ch)的返回值

(1)cin ,cout 就不用多說了還是返回乙個iostream物件,因此它們可以這麼使用。

cin >> var1 >> var2 >>var3;

cout << var1 << var2 <

cin.get() 沒有引數時,返回值是乙個整數,所以通常這麼用

while((ch=cin.get()) != eof)

cout << ch;

cin.get(ch)代引數時,返回的也是乙個iostream物件,因此可以這麼用

cin.get(a).get(b).get(c);

2 cin.get(buffer, num, terminate)  cin.getline(buffer, num, terminate)的區別

注:terminate 一般為 '\n'

二者都是每次讀取一行字元,或是碰到ternimate指定的字元終止或是讀的字元數超過num - 1終止。

區別是cin.get會把terminate留在緩衝區中,因此下次讀到的第乙個字元就是terminate字元,相反,cin.getline()則會丟棄緩衝區中的terminate字元。

#include

using namespace std;

int main()

char stringone[255];

char stringtwo[255];

cout << 「enter string one:」;

cin.get(stringone,255);

cout << 「string one: 「 << stringone << endl;

cout << 「enter string two: 「;

cin.getline(stringtwo,255);

cout << 「string two: 「 << stringtwo << endl;

cout << 「\n\nnow try again...\n」;

cout << 「enter string one: 「;

cin.get(stringone,255);

cout << 「string one: 「 << stringone<< endl;

cin.ignore(255,』\n』);

cout << 「enter string two: 「;

cin.getline(stringtwo,255);

cout << 「string two: 「 << stringtwo<< endl;

return 0;

看輸入輸出結果:

enter string one:once upon a time

string one: once upon a time

enter string two: string two:

now try again...

enter string one: once upon a time

string one: once upon a time

enter string two: there was a

string two: there was a

3 兩個比較有用的函式:peek(), putback() 和 ignore()

cin.peek(ch);   忽略字元ch

cin.putback(ch);  把當前讀到的字元替換為ch

cin.ignore(num, ch); 從當前字元開始忽略num個字元,或是碰到ch字元開始,並且把ch字元丟丟掉。

#include

using namespace std;

int main()

char ch;

cout << 「enter a phrase: 「;

while ( cin.get(ch) != 0 )

if (ch == 『!』)

cin.putback(『$』);

else

cout << ch;

while (cin.peek() == 『#』)

cin.ignore(1,』#』);

return 0;

輸入輸出結果:

enter a phrase: now!is#the!time#for!fun#!

now$isthe$timefor$fun$

4 cout.put() cout.write()

與輸入相同,cout.put(ch) 返回乙個iosream物件,因此可以連續使用

cout.write(text,num)  輸出text中的num個字元,如果num > strlen(text), 則後面輸出的是text之後的記憶體中的隨機的字元。

#include

#include

using namespace std;

int main()

char one = 「one if by land」;

int fulllength = strlen(one);

int tooshort = fulllength -4;

int toolong = fulllength + 6;

cout.write(one,fulllength) << endl;

cout.write(one,tooshort) << endl;

cout.write(one,toolong) << endl;

return 0;

輸入結果:

one if by land

one if by

one if by land i?!

Record10 指標的輸入輸出特性

目錄 理解指標必須和記憶體四區的概念相結合才能透徹 指標的輸入輸出特性案例 1級指標作輸出 應用指標必須和函式呼叫相結合 指標作函式引數 總體 1.主調函式 被調函式 a 主調函式可把堆區 棧區 全域性資料記憶體位址傳給被呼叫函式 b 被呼叫函式只能返回堆區 全域性資料 2.記憶體分配方式 a 指標...

C 容易忽略的特性

1 cin 標準輸入流物件,與標準輸入裝置相聯絡 通常指鍵盤 例如 cin 變數名 為提取運算子 輸入運算子 表示從鍵盤讀取資料放入變數中。2 cout 標準輸出流 流物件 與標準輸出裝置相聯絡 通常指顯示器 例如 cout 資料 為插入運算子 輸出運算子 表示將 資料 寫到顯示器上。3 cerr ...

二級指標做函式引數的輸入輸出特性

輸入特性 define crt secure no warnings include include include 二級指標做函式引數的輸入特性 主調函式分配記憶體,被調函式使用 void printarray int parray,int len void test01 void test02 ...