Как создать массив C-строк?

Поэтому я просто хотел бы создать массив C-строк в C++. Да, я знаю, что C++ использует строковый тип данных, но то, над чем я работаю, требует от меня создания массива C-строк. Сами струны представляют собой массив символов. Итак, будет ли создание массива C-строк таким же, как создание двумерного массива char? И затем, чтобы получить доступ к каждому отдельному символу, мне нужно было бы указать соответствующие строки и столбца. Тем не менее, я хотел бы представить это как одномерный массив C-строк, где каждый индекс возвращает полную C-строку. Как я могу это сделать? Пожалуйста, объясни. Как мне пройти через такой массив и распечатать или вернуть каждую C-строку вместо того, чтобы иметь вложенные циклы для возврата каждого символа отдельно?

2 ответа

Для строковых литералов вы можете просто сделать это:

const char *strings[] = { "foo", "bar", "blech" };

Для массива строк, которые вы хотите изменить, вы можете сделать что-то вроде этого:

char strings[3][80] = { "foo", "bar", "blech" };

В любом случае вы можете просто напечатать их так:

for (int i = 0; i < 3; ++i)
{
    std::cout << strings[i] << std::endl;
}

или, возможно, более идиоматически:

for (auto & s : strings)
{
    std::cout << s << std::endl;
}

Строка в стиле C- это не более чем массив char, заканчивается с '\0', Чтобы иметь массив "строк", у вас просто есть массив массивов, например

char my_array_of_strings[ARRAY_SIZE][STRING_SIZE + 1];  // +1 for terminator

Или вы можете иметь массив указателей:

char* my_array_of_strings[ARRAY_SIZE];

Какой из них лучше, зависит от ваших вариантов использования.

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