我有一個可容納1000個元素的字符數組('\ 0'爲+1)。該數組將由用戶輸入填充。我想知道是否有任何方法檢查輸入是否超過數組可以容納的數量。如果我確實嘗試添加它,程序會在我比較其大小之前崩潰。我在想擴大陣列,看看輸入是否少於1000個字符,但這個想法似乎也不是一個很好的我。C++字符數組大小驗證
編輯:
使用std::cin.getline()
從用戶 獲得輸入,不能使用Sting
類
我有一個可容納1000個元素的字符數組('\ 0'爲+1)。該數組將由用戶輸入填充。我想知道是否有任何方法檢查輸入是否超過數組可以容納的數量。如果我確實嘗試添加它,程序會在我比較其大小之前崩潰。我在想擴大陣列,看看輸入是否少於1000個字符,但這個想法似乎也不是一個很好的我。C++字符數組大小驗證
編輯:
使用std::cin.getline()
從用戶 獲得輸入,不能使用Sting
類
我想一個方法來檢查它找到的\0
索引數組中的IM。如果位置等於或大於1000
,則不應向其中添加更多字符。
如果您正在使用cin.getline()
,你可以使用一個變量n
指定最大字符的你想
istream& getline (char* s, streamsize n);
istream& getline (char* s, streamsize n, char delim);
在這裏你可以設置n=1001
(也計數終止字符\0
)。
我使用'cin.getline()'所以所有的輸入立即存儲在數組中。這不是太重要,但這是一份任務,我的教授喜歡將任何可能發現錯誤的東西都削減60%。 –
@JosipDorvak你可以使用'std :: string'。 – juanchopanza
檢查我更新的答案。 –
簡答:是的。
使用std::string
:
std::string line
while (std::getline(std::cin, line))
{
// do something with line
}
如果您不允許使用std::string
,那麼您可以角色你自己的字符串類,或者看看std::getline
共同實現和模仿他們(只是沒有將其存儲在std::string
)。
感謝您的建議。我知道一個實際的字符串會起作用。但我們的教授不希望我們使用字符串。真不方便。我只是被過度保護,沒有他可以「嘗試」溢出陣列 –
當然,他會嘗試溢出陣列。這可能是這項任務的主要觀點之一。 – John
你是如何填充陣列?請給你的例子 –