如何在C ++中分配字符串数组?

时间:2016-11-30 22:04:46

标签: c++

我正在学习C ++并使自己成为一个超过10,000行的文本文件。我试图创建一个字符串数组并将第一行插入第一个数组,第二行插入第二个数组,依此类推。这是我到目前为止所做的:

ifstream theFile;
string inputFile;
cin >> inputFile;
theFile.open(inputFile.c_str());
const unsigned int ARRAY_CAP = 64U;

string line;
string *lineArr = new string[ARRAY_CAP];

if (theFile.is_open()) {
    int lineNumber = 0;
    while (!theFile.eof()) {
        getline(theFile, line);
        lineArr[i] = line;
        i++;
    }
}

我的一个朋友告诉我要分配字符串数组,因为我的内存不足,但我甚至不知道该怎么做。我怎么能分配字符串数组?

1 个答案:

答案 0 :(得分:0)

如果您想继续使用动态分配的数组,则需要动态扩展它们。

unsigned int lines_read = 0U;
std::string text_line;
unsigned int capacity = 4U;
std::string * p_array = new std::string[capacity];
while (std::getline(theFile, text_line))
{
  p_array[lines_read] = text_line;
  ++lines_read;
  if (lines_read > capacity)
  {
     // Allocate new array with greater capacity.
     unsigned int old_capacity = capacity;
     capacity = capacity * 2U;
     std::string p_new_array = new std::string[capacity];
     std::copy(p_array, p_array + old_capacity, p_new_array);
     delete [] p_array;
     p_array = p_new_array;
  }
}

std::vector为您执行类似的内存管理,因此您无需执行上述操作。