Проверка размера массива символов C++

У меня есть массив символов, который может содержать 1000 элементов (+1 для '\0'). Массив будет заполнен пользовательским вводом. Мне было интересно, если есть какой-либо способ проверить, является ли вход больше, чем может содержать массив. Если я попытаюсь добавить его, программа потерпит крах, прежде чем я смогу сравнить ее размер. Я думал расширить массив и посмотреть, будет ли ввод меньше 1000 символов, но эта идея мне тоже не кажется действительно хорошей.

РЕДАКТИРОВАТЬ:

я использую std::cin.getline() чтобы получить ввод от пользователя и не может использовать Sting учебный класс

2 ответа

Решение

Я думаю, что один из способов проверить это, чтобы найти индекс \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).

Другие вопросы по тегам