【发布时间】:2019-02-20 10:36:36
【问题描述】:
场景: 从文件中读取数字并相应地创建动态二维数组 数据文件第一行代表房间,其余行代表房间人数
例如:
4 4 6 5 3一共4个房间,第一个房间有4个人,第2个房间有6个人...
到目前为止,这是我的代码,如何检查我是否创建了大小正确的动态数组?
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
ifstream readFirstLine("data.txt");
ifstream readData("data.txt");
string line;
int numRoom, numPerson = 0;
int i = -1;
while (getline(readFirstLine, line))
{
istringstream linestream(line);
if (i == -1)
{
linestream >> numRoom;
cout << "numRoom:" << numRoom << endl;
break;
}
}
readFirstLine.close();
int** numRoomPtr = new int*[numRoom];
while (getline(readData, line))
{
istringstream linestream(line);
if (i == -1)
{
}
else
{
linestream >> numPerson;
numRoomPtr[i] = new int[numPerson];
cout << "i:" << i << endl;
cout << "numPerson:" << numPerson<< endl;
}
i++;
}
readData.close();
return 0;
}
【问题讨论】:
-
除非这是一个使用指针和动态分配的练习,否则不要这样做。请改用
std::vector。 -
除此之外,为什么要对第一个输入使用循环?为什么不对其他输入使用
for循环? -
至于你的问题,能否详细说明一下?您从文件中读取的数字是否正确读取?
new[]不抛出异常吗?你试过debug your program吗?它是否符合您的预期? -
第一个循环用于从文本文件中提取第一行的值并打破循环第二个循环用于提取第二行的值直到最后一行
-
不抛出任何异常。这是输出: numRoom:4 i:0 numstation:4 i:1 numstation:6 i:2 numstation:5 i:3 numstation:3
标签: c++ arrays visual-c++ multidimensional-array dynamic