У меня есть массив символов, который может содержать 1000 элементов (+1 для ‘\ 0’). Массив будет заполнен пользовательским вводом. Мне было интересно, если есть какой-либо способ проверить, является ли вход больше, чем может содержать массив. Если я попытаюсь добавить его, программа потерпит крах, прежде чем я смогу сравнить ее размер. Я думал расширить массив и посмотреть, будет ли ввод меньше 1000 символов, но эта идея мне тоже не кажется действительно хорошей.
РЕДАКТИРОВАТЬ:
я использую std::cin.getline()
получить ввод от пользователя
и не может использовать Sting
учебный класс
Я думаю, что один из способов проверить это, чтобы найти индекс \0
в вашем массиве. Если позиция равна или больше 1000
, то вы не должны добавлять больше символов к нему.
Если вы используете cin.getline()
Вы можете использовать переменную n
указать максимум символов, которые вы хотите
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
Здесь вы можете установить n=1001
(также считается символ завершения \0
).
Краткий ответ: да.
использование std::string
:
std::string line
while (std::getline(std::cin, line))
{
// do something with line
}
Если вам не разрешено использовать std::string
тогда вы можете либо назначить свой собственный строковый класс, либо посмотреть на общие реализации std::getline
и подражать им (просто не сохраняя его в std::string
).