我正在学习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++;
}
}
我的一个朋友告诉我要分配字符串数组,因为我的内存不足,但我甚至不知道该怎么做。我怎么能分配字符串数组?
答案 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
为您执行类似的内存管理,因此您无需执行上述操作。