2011-10-17 218 views
1

我正在創建一個控制檯程序,要求用戶輸入0到100之間的整數,然後輸出每個數字以及輸入了多少次。用戶輸入的每個數字用空格分隔,輸入0時輸入結束。到目前爲止,我正在使用cin.getline將數字存儲在字符數組中。這限制了操作數字的能力,因爲它們以ascii字符存儲。如果用戶鍵入10,我希望能夠將10作爲單個整數存儲到新陣列中,例如s[i]=converted_number將字符數組轉換爲整數

+0

問題是? – thumbmunkeys

+0

如何將字符數組中的元素作爲數字並將其轉換爲整數。我所需要的只是一種方法來獲取像s [0]這樣的數組指針,並將它的值(如'0')轉換爲0的整數並將其存儲在另一個數組中。抱歉沒有具體。 – user999861

回答

4

而不是使用cin.getline簡單地做:

int input; 
while(cin >> input, input != 0) 
{ 
    ...do computations or store it somewhere... 
} 

,將讓你在整數的形式輸入。

+0

非常真實。我開始那樣。但是cin停在空間。 – user999861

+0

@ user999861:這就是爲什麼你多次調用它,每次提取一個不同的(空格分隔的)整數值。當輸入爲0時,您打破循環。 –

+0

好吧,我明白你要去哪裏。我錯過了它的循環閱讀。生病看看我是否有用。 – user999861

1

我不確定這是你在找什麼,但是增強對此有好處。它被稱爲lexical_cast。見http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm

+0

我一直在閱讀帖子後提升作爲解決方案。我會跳過這一點,但我是一名學生,我正在爲一個班級做這件事。我不知道這將被允許。我欣賞輸入壽命。 – user999861

+0

Boost是C++庫(不包括STL),我不知道很多C++軟件不使用它,爲什麼它不應該被允許?除此之外,還有'itoa()'(不是C++標準的一部分),並使用類似K-ballo類型安全方式的'cin'。 – Florian

+0

@krynr Boost可能是C++庫,但是當涉及到學習/教授語言本身時,大部分Boost與std ::本身的很多部分是相反的。它不會產生解決問題的正確本能。這應該從OP中顯而易見。 –