C++ 将字符串从二维指针数组分配到一维指针数组
目前,我只需要使用数组和指针(因此没有结构或数据结构)来完成这项工作 我试图附加一个以数组表示的现有数据表。我这样做的方式是从文件中获取数据,并将其全部放入指针数组中,每当我想显示它时,通过函数将其转换为2d数组 我的问题是,现在我正在添加数据,当我的程序转到代码中向指针数组分配更多数据的部分时,它会崩溃C++ 将字符串从二维指针数组分配到一维指针数组,c++,arrays,pointers,dynamic-memory-allocation,C++,Arrays,Pointers,Dynamic Memory Allocation,目前,我只需要使用数组和指针(因此没有结构或数据结构)来完成这项工作 我试图附加一个以数组表示的现有数据表。我这样做的方式是从文件中获取数据,并将其全部放入指针数组中,每当我想显示它时,通过函数将其转换为2d数组 我的问题是,现在我正在添加数据,当我的程序转到代码中向指针数组分配更多数据的部分时,它会崩溃 void appendCurTable(int oldSize, int newSize, string **ptTempData) { int oldRow, newRow;
void appendCurTable(int oldSize, int newSize, string **ptTempData)
{
int oldRow, newRow;
string curFileName = "records/current.dat";
oldRow = (oldSize/col);
newRow = (newSize/col);
i=0;
int a = i+oldSize;
readCurFile(curFileName, newSize);
for(ir=oldRow;ir<newRow;ir++)
{
for(ic=0;ic<col;ic++)
{
*(tablePtr + a) = ptTempData[ir][ic];
i++;
}
}
}
//How tablePtr is initialized
void readCurFile(string a, int size)
{
i = 0;
ifstream infile;
infile.open(a.c_str());
tablePtr = new string[size];
if(tablePtr==NULL)
{
cout<<"Insufficient Memory Allocation.\n Program will terminate.";
exit(1);
}
if(infile.is_open())
{
while(infile.good())
{
getline(infile, *(tablePtr +i), ';');
i++;
}
infile.close();
}
else
{
cout<<"Error opening file.";
}
}
void appendCurTable(int oldSize、int newSize、string**ptTempData)
{
int oldRow、newRow;
字符串curFileName=“records/current.dat”;
oldRow=(oldSize/col);
newRow=(newSize/col);
i=0;
int a=i+旧尺寸;
readCurFile(curFileName,newSize);
对于(ir=oldRow;ir我找到了答案。我使用了一个不正确的数字来引用ir。ir的函数应该用于我在函数Append中声明的I
正确代码:
void appendCurTable(int oldSize, int tempSize, int newSize, string **ptTempData)
{
string curFileName = "records/current.dat";
i=oldSize;
readCurFile(curFileName, newSize);
for(ir=0;ir<tempSize;ir++)
{
for(ic=0;ic<col;ic++)
{
tablePtr [i] = ptTempData[ir][ic];
i++;
}
}
}
void appendCurTable(int oldSize、int tempSize、int newSize、string**ptTempData)
{
字符串curFileName=“records/current.dat”;
i=旧尺寸;
readCurFile(curFileName,newSize);
对于(ir=0;ir能否请您就您正在使用的值给出更多的具体示例?另一方面,我认为您需要增加a而不是I。我也尝试过增加a,但仍然没有解决它。这些值都是字符串数据类型。代码中有一些不一致之处。tablePtr来自哪里?然后在嵌套中ed for是基于a分配的,当您递增i和a时,nor tablePtr正在移动,在所有周期中,它们都指向同一个内存addr。tablePtr此时是一个全局数组。我刚刚尝试使用i本身和递增i。它仍然崩溃。您如何初始化tablePtr?