2015-07-20 70 views
0

我試圖存儲陣列使用大量。這裏是我的代碼:如何存儲大量的未知長度的數組

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

void main(){ 
    char number[10]; 
    int size = 0; 
    for (int i = 0; i < 10; i++){ 
     std::cin >> number[i]; 
     size++; 
    } 

    for (int i = 0; i < size; i++){ 
     std::cout << "number[" << i << "]: " << number[i] << endl; 
    } 

} 

當我輸入一個號碼與正好10位,但如果我輸入一個數小於然後我的程序將只是掛,因爲它等待我進入所有10個數字也能正常工作。

有沒有一種方法來檢測,當用戶按下回車鍵?或者當用戶輸入整個數字時告訴for循環斷開的某種方式?

+1

您可以在讀取數字後添加'if(!std :: isdigit(number [i],std :: locale()))break;'。隨着'#包括'。不過,這將是比較正常的,你讀了'string'然後再處理字符串。 –

+0

如果你所要做的只是把數字輸入到字符緩衝區中,那麼你可能只需要使用'std :: string',它的行爲與'cin'一樣。 – Alejandro

+0

我曾經在SO的某處讀過它很好有禮貌地知道你會事先需要多大的陣容。也許要求用戶輸入數字的位數? –

回答

0

這是更好地採取輸入而不循環,因爲這是一個數字,否則用戶輸入一個數字,然後加一個空格,或者輸入到輸入下一個數字等。相反,用戶將希望無需輸入空格並輸入號碼。

但在這種方法中,你將不能夠檢查用戶是否在輸入時給出了一個有效的數字!你必須再次遍歷數組來檢查每個數字!

#include <iostream> 
#include <string.h> 

using namespace std; 

int main() 
{ 
    char number[10]; 
    int size = 0; 
    cin >> number; 
    size=strlen(number); // number of digits entered 

    cout << "Number of digits entered: " << size << endl; 
    cout << "Entered Number is: " << number; 
} 
+0

這工作!非常感謝:D –

相關問題