Как я могу ввести строки различной длины в массив 2d символов в C ++?

Мне необходимо ввести 4 строки, поэтому указывается количество строк, которые необходимо ввести, но длина каждой строки различна. Поскольку я должен выполнять символьно-специфичные операции, это должен быть 2d массив символов, если я не ошибаюсь. Как я могу кодировать это в C ++.

Справка: вопрос в спой

Входные данные:

4          // number of test cases
your
progress
is
noticeable

Как ввести это в C ++? Пожалуйста, помогите в прояснении концепции этого.

0

Решение

Стандартная библиотека C ++ предоставляет класс std::string, который вы должны выбрать в отличие от char*, char[]и что небезопасный материал.

Затем вы читаете в эти строки (в вашем случае) из std::cin входной поток, используя либо std::istream::operator>> или же std::getline или что вы хотите использовать, в зависимости от того, что вы хотите прочитать.

Теперь, чтобы хранить эти строки в подходящей структуре данных, кое-что массива кажется подходящим. Стандартная библиотека C ++ предлагает для этого различные виды контейнеров, исключительно в зависимости от того, как вы хотите хранить / обращаться к строкам. Примеры std::vector (динамически модифицируемый массив), std::array (более безопасная альтернатива массиву), std::deque (двусторонняя очередь), std::forward_list (односвязный список) и std::list (двусвязный список). Эти структуры данных предоставляют соответствующие операции для добавления элементов, их удаления, вставки и т. Д. В зависимости от конкретного контейнера, насколько они эффективны и применяются ли они вообще.
Для задач общего назначения рекомендую std::vector,

3

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

Если вы действительно хотите, вы можете использовать malloc () для инициализации массива символов, а затем realloc () sizeof (char) умножить на количество символов. Вы даже можете добавить маркер, чтобы отделить различные строки, которые вы хотите ввести.

Просто убедитесь, что вы не забыли освободить () массив в конце вашего кода.

0

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