Ответ 1
Используйте std::vector
и std::string
:
#include <vector> //for std::vector
#include <string> //for std::string
std::vector<std::string> data;
data.push_back("my name");
Обратите внимание, что в С++ вам не нужно использовать new
каждый раз, когда вы создаете объект. Объект data
инициализируется по умолчанию, вызывая конструктор по умолчанию std::vector
. Таким образом, приведенный выше код в порядке.
В С++, moto: Избегайте new
как можно больше.
Если вы знаете размер уже во время компиляции, и массив не нужно расти, вы можете использовать std::array
:
#include <array> //for std::array
std::array<std::string, N> data; //N is compile-time constant
data[i] = "my name"; //for i >=0 and i < N
Подробнее читайте в документации:
Стандартная библиотека С++ содержит много контейнеров. В зависимости от ситуации вы должны выбрать тот, который наилучшим образом соответствует вашей цели. Я не могу говорить о каждом из них. Но вот диаграмма, которая помогает много (источник):