我正在尋找清理一些已經運行的代碼,我有。首先,這是一個賦值,賦值指定整數必須作爲整數,雙精度等等,否則我可能只是將輸入作爲雙精度來投射,如同int if(number%1==0)
。C + + int或雙輸入
我已經將代碼修剪成只處理輸入(使用輸出語句來驗證它是否正常工作)。
int wholePart=0;
double decimalPart=0;
cout << "Input a number: ";
cin >> wholePart;
if(cin.peek() != '\n')
cin >> decimalPart;
cout << "wholePart = " << wholePart << endl << "decimalPart = " << decimalPart << endl;
現在...這是是利國利民的,經過我添加代碼來處理相結合的整數和小數,如果decimalPart不爲0的話,我已經做了超過轉讓要求,但我期待學習,並且我想盡可能地清理這些代碼。
我可以用其他輸入驗證來包裝整個輸入部分,以確保用戶實際上輸入的是數字而不是字符。但我主要關心的是if(cin.peek() != '\n')
不夠好。也許if(cin.peek() == '.')
是一個更好的選擇,但我很好奇什麼是完成我在這裏完成的工作的最佳方式。有任何想法嗎?
請不要只是把它寫成「哦,它是作業」。我想強調的是,我的計劃已經超出了功課額外的功勞部分。我只是想了解更多關於該語言的信息,以及處理這種輸入的最佳方式。
我同意在整體上它看起來很人造,當然不是我在做任務的限制之外做的。您能否更詳細地向我解釋tellg和seekg函數的作用以及如何正確使用這些函數? – nhgrif
@nhgrif它們是'std :: istream'的標準成員函數:第一個返回當前位置(作爲std :: streampos),第二個從先前的調用中獲取std :: streampos到'告訴',並在那裏進行下一次閱讀。 –
謝謝。我想我可能會實現'tellg'和'seekg',而不是像我的任務那樣額外增加額外的部分,因爲這似乎更有可能在if(cin.peek()==')方面具有更多的未來用處。 ')'方法。 – nhgrif