ストラウストラップのプログラミング入門(8) 第4章ドリル(続々)

ストラウストラップのプログラミング入門』を読む。4章ドリルの続き。8が分からない。

ドリル8

単位のない値、または単位の表記が「無効」である値(y、yard、meter、km、gallonsなど)を拒否する。

前者=「単位のない値」を入力できなくて困ってる。

while文の継続条件を次のようにすると、単位のない数字のみの入力ができない。

// xはdouble値、unitは単位を表すstring
while(cin >> x >> unit)

…話のレベルが低すぎて伝わらない気がする。「単位を入力せずに、数値のみを入力して、入力の受け取りを終了する方法」が分からないという意味です。

数値つき単位として1つのstringを読み込み、数値とそれ以外に分割すればいいのかな。

それとも、cinの使い方の問題? でも、たとえば次のようにしても、問題は変わらない。

// xはdouble値、unitは単位を表すstring
while(cin >> x){

	// 1回目の入力エラー処理
	
	cin >> unit;
	
	// 2回目の入力エラー処理

何かプリミティブなことで悩んでるなぁ。