Динамические массивы строк

Доброго дня. Пытаюсь создать динамический массив строк (именно string).
Код: http://pastebin.com/raw/TNEtfrRQ
Делать так видимо нельзя: ошибку не выдает, но как только дебаг доходит до p3[4], пишет «memcpy.asm не найден» — такое бывает когда пытаешься обратиться к несуществующему элементу массива..
Как нужно делать, чтобы менять длину массива строк в процессе?
Спасибо.

Габриель, либо так:

#include <iostream>
#include <string>
using namespace std;

size_t i = 4;
string *p3 = new string[i];

int main() {
    p3[0] = "char";
    p3[1] = "chat";
    p3[2] = "chart";
    p3[3] = "charter";

    i++;
    string *p3t = new string[i];
    for (size_t j = 0; j < i - 1; ++j)
        p3t[j] = p3[j];
    delete[] p3;
    p3 = p3t;

    p3[4] = "cherry";

    for (size_t j = 0; j < i; ++j)
        cout << p3[j] << endl;

    cin.get(); cin.get();
    delete[] p3;
    return 0;
};

либо, что предпочтительнее, вместо массива использовать vector.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.