проверка размера массива символов c ++

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

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

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

0

Решение

Я думаю, что один из способов проверить это, чтобы найти индекс \0 в вашем массиве. Если позиция равна или больше 1000, то вы не должны добавлять больше символов к нему.

Если вы используете cin.getline() Вы можете использовать переменную n указать максимум символов, которые вы хотите

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

Здесь вы можете установить n=1001 (также считается символ завершения \0).

1

Другие решения

Краткий ответ: да.

использование std::string:

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

Если вам не разрешено использовать std::stringтогда вы можете либо назначить свой собственный строковый класс, либо посмотреть на общие реализации std::getline и подражать им (просто не сохраняя его в std::string).

1

По вопросам рекламы [email protected]