如何在C++;? 我学习C++,并用一行超过10000行的文本文件。我试图创建一个字符串数组,并将第一行插入第一个数组,第二行插入第二个数组,依此类推。以下是我迄今为止所做的工作: 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++; } }

如何在C++;? 我学习C++,并用一行超过10000行的文本文件。我试图创建一个字符串数组,并将第一行插入第一个数组,第二行插入第二个数组,依此类推。以下是我迄今为止所做的工作: 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++; } },c++,C++,我的一个朋友告诉我分配字符串数组,因为我的内存不足,但我甚至不知道如何分配。我如何才能分配字符串数组?如果您想继续使用动态分配的数组,则需要动态扩展它们 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))

我的一个朋友告诉我分配字符串数组,因为我的内存不足,但我甚至不知道如何分配。我如何才能分配字符串数组?

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

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
为您执行类似的内存管理,因此您不必执行上述操作。

为什么不直接使用
std::vector>
?另外,“while(!theFile.eof())”不能满足您的要求。请使用并忘记分配。@JesperJuhl我也想知道如何分配数组。我哥哥告诉我,他们在大学里一直分配数组/@杰姆斯——<代码> STD::向量是我们如何在C++中“分配”数组。不管你指的是什么样的大学,都是在1990年初教C++的,而不是C++今天的(以及过去18年的坦率)。杰姆斯说,在大学里的教学可能需要将知识提升到现代C++,而不是停留在90。