初學者通常面對已知數量的輸入法比較沒問題,例如下面兩個範例。
以下範例輸入的數字以空白或 Enter 隔開。

範例一、已知輸入 6 個整數 ...
範例二、已知輸入一串整數,最後一整數以 0 結尾。(0 表示停止輸入)

下面範例輸入數字的數量未知且不知何時停止輸入。

範例:輸入一串自然數列,如果是偶數則輸出,若無偶數,輸出 No。(至少輸入一數)


以空白當數字間的間格
輸入測試 1 :7 13 6 8 9 4
結果:6 8 4

輸入測試 2 :12 3 6 7 11
結果:12 6

輸入測試 3 :79
結果:No

程式碼:(使用 getchar 抓 空白 與 Enter)
#include <iostream>
using namespace std;
int main() {
	char c;
	int x;
	bool t = false;//偶數旗標
	while(1) {
		cin >> x;
		if( x%2 == 0 ){
			cout  <<  x  <<  ' ';
			t = true;
		}
		c=getchar();//接收數字後的空白或 Enter
		if(c == '\n') break;//如果是 Enter 表示結束
	}
	if(t == false) cout  << "No\n";//是偶數則設為 true
	return 0;
}

另一種使用 strtok 字串分割方法

#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main() {
	string s;
	char *p;
	int x;
	bool t = false;//偶數旗標 
	getline(cin , s);
	p = strtok((char *)s.c_str() , " ");//依據空白分割
	do{
		x = atoi(p);//string 轉型 int 
		if( x%2 == 0 ){
			cout << x << '\n';
			t = true;//是偶數則設為 true 
		}
		p = strtok(NULL," ");//繼續分割下一個數字
	}while(p!=NULL);//分割完後,strtok 傳回 NULL
	if(t == false) cout << "No\n";
	return 0;
}
以跳行當數字間的間格
輸入測試 1 :
7
13
6
8
9
4

結果:
6
8
4

輸入測試 2 :
12
3
6
7
11

結果:
12
6

輸入測試 3 :
79

結果:No

程式碼:(使用 getline 及轉型)
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
	string s;
	int x;
	bool t = false;//偶數旗標 
	while(1) {
		getline(cin , s);
		if(s == "") break;
		x = atoi(s.c_str());//string 轉型 int 
		if( x%2 == 0 ){
			cout << x << '\n';
			t = true;//是偶數則設為 true 
		}
	}
	if(t == false) cout << "No\n";
	return 0;
}