C++標準輸入流對象cin需重點掌握的函數

C++標準輸入流對象cin需重點掌握的函數

1. cin.get()

cin.get() 一次只能從緩衝區拿走一個字符

void test01(){
	// 輸入as   緩衝區中  a  s  換行    第一個拿  a  第二個 拿 s  第三次拿換行 第四次等待下次輸入
	char c = cin.get();
	cout << "c = " << c << endl;

	c = cin.get();
	cout << "c = " << c << endl;

	c = cin.get();
	cout << "c = " << c << endl;

	c = cin.get();
	cout << "c = " << c << endl;
}

運行結果:
在這裏插入圖片描述
cin.get(兩個參數) 可以拿取字符串,不會把換行符拿走,遺留在緩衝區中

void test02(){
	//cin.get(兩個參數) //可以讀字符串
	char buf[1024];
	cin.get(buf, 1024);

	char c = cin.get();

	if (c == '\n'){
		cout << "換行還在緩衝區" << endl;
	}
	else{
		cout << "換行不在緩衝區" << endl;
	}
	cout << buf << endl;
}
//cin.get(兩個參數)讀取字符串時,不會把換行符拿走,遺留在緩衝區中

運行結果:
在這裏插入圖片描述

2. cin.getline()

語法:
cin.getline(字符指針(char*),字符個數N(int),結束符(char));
  此函數會一次讀取多個字符(包括空白字符)。它以指定的地址爲存放第一個讀取的字符的位置,依次向後存放讀取的字符,直到讀滿N-1個,或者遇到指定的結束符爲止。若不指定結束符,則默認結束符爲換行符,此函數並不保留結束符,它通過結束符確定結束,但不保存結束符,它用空字符來替換結束符。

void test03(){
	char buf[1024];
	cin.getline(buf, 1024);
	char c = cin.get();//如果把換行符也讀取了,緩衝區沒有數據,此行代碼會阻塞,等待輸入
	if (c == '\n'){
		cout << "換行還在緩衝區" << endl;
	}
	else{
		cout << "換行不在緩衝區" << endl;
	}
	//cin.getline 把換行符讀取,並且扔掉
}

運行結果:
在這裏插入圖片描述

3. cin.ignore()

cin.ignore(); 沒有參數 代表忽略一個字符 ,帶參數N,代表忽略N個字符

void test04(){
	cin.ignore(2); //沒有參數 代表忽略一個字符 ,帶參數N,代表忽略N個字符
    char buf[1024];
	cin.getline(buf,1024);
	cout << "buf = " << buf << endl;
}

在這裏插入圖片描述

4. cin.peek()

cin.peek()獲取一下第一個字符,然後再放回緩衝區

void test05(){
	//輸入as  偷看一眼 a,然後再放回緩衝區 緩衝區中還是as
	char c = cin.peek();
	cout << "c = " << c << endl;
	c = cin.get();
	cout << "c = " << c << endl;
}

運行結果:
在這裏插入圖片描述

5. cin.putback()

cin.putback()將字符放回到輸入流中

void test06(){
	char c = cin.get();
	cin.putback(c);

	char buf[1024];

	cin.getline(buf,1024);
	cout << buf << endl;
}

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章