Как создать массив 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];
Какой из них лучше, зависит от ваших вариантов использования.