2013-10-07 90 views
0

我有一個可容納1000個元素的字符數組('\ 0'爲+1)。該數組將由用戶輸入填充。我想知道是否有任何方法檢查輸入是否超過數組可以容納的數量。如果我確實嘗試添加它,程序會在我比較其大小之前崩潰。我在想擴大陣列,看看輸入是否少於1000個字符,但這個想法似乎也不是一個很好的我。C++字符數組大小驗證

編輯:

使用std::cin.getline()從用戶 獲得輸入,不能使用Sting

+0

你是如何填充陣列?請給你的例子 –

回答

1

我想一個方法來檢查它找到的\0索引數組中的IM。如果位置等於或大於1000,則不應向其中添加更多字符。

如果您正在使用cin.getline(),你可以使用一個變量n指定最大字符的你想

istream& getline (char* s, streamsize n); 
istream& getline (char* s, streamsize n, char delim); 

在這裏你可以設置n=1001(也計數終止字符\0)。

+0

我使用'cin.getline()'所以所有的輸入立即存儲在數組中。這不是太重要,但這是一份任務,我的教授喜歡將任何可能發現錯誤的東西都削減60%。 –

+0

@JosipDorvak你可以使用'std :: string'。 – juanchopanza

+0

檢查我更新的答案。 –

1

簡答:是的。

使用std::string

std::string line 
while (std::getline(std::cin, line)) 
{ 
    // do something with line 
} 

如果您不允許使用std::string,那麼您可以角色你自己的字符串類,或者看看std::getline共同實現和模仿他們(只是沒有將其存儲在std::string)。

+0

感謝您的建議。我知道一個實際的字符串會起作用。但我們的教授不希望我們使用字符串。真不方便。我只是被過度保護,沒有他可以「嘗試」溢出陣列 –

+1

當然,他會嘗試溢出陣列。這可能是這項任務的主要觀點之一。 – John