我正在尝试从文件读入数组。但我正在分配我的数组大小= 5.无论文件有多大,它应该读取,直到它的大小然后停止然后我想复制所有元素已被读取到一个大小= 10的新数组并删除旧的one.Plus完成将文件读入我的新数组。每次新数组的大小应该是它的两倍时做同样的事情。 qoustion是如何确定我当前的数组是否已满?让我们说
ifstream in;
while (in.fail())
{
cout << "Exit" << endl;
return 9;
}
int size =5;
int* array;
int* resize;
int inc=0;
array = new int[size];
while (in << *(array+inc))
{
inc++;
/// here i want to detrmine if it's full to do the rest of code
}
PrintArray(resize,size)
任何提示或提示。
如何让这样的东西发挥作用。
while (in >> *(array+inc)
{
if (inc <=5) // if it reaches the size which is 5
{
for (int i=0; i<size i++)
{ // to copy all elements to the new array
resize[i] = array[i]
}// delete the old array
delete[] array;
while (in >> *(resize+size) ) // to keep reading the file where it's stoped
}
PrintArray(resize,size) // print it
delete[] resize; // delete the new array and so on
in.close();
任何建议
答案 0 :(得分:1)
您无法以编程方式确定经典动态分配的c样式数组的容量。你通过使用各种sizeof尝试找到了这个。 (顺便说一下 - 你应该看看你是否能解决为什么你得到了各种错误的答案)
通过大小和计数器变量来了解自己跟踪大小和空间的唯一方法
这是矢量的优点之一 - 它为你做了所有这些
另见:How do I determine the size of my array in C?
额外信用:找到std :: vector实现的来源,看看它是如何做到的?