如何读取residence.dat文件C++;使用条带化算法 我必须从两个.dAT文件读取数据,但是我的控制台输出功能有问题,我的C++技能仍然生锈,有人能帮助吗?
使用条带化从residences.dat读取地址记录的子集。对于n>进程,每个进程都会计算 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应忽略任何地址,>不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程不要将整个数据集读入内存中的数据结构 因为这是完全不必要的,并且消耗了太多的内存 数据示例如何读取residence.dat文件C++;使用条带化算法 我必须从两个.dAT文件读取数据,但是我的控制台输出功能有问题,我的C++技能仍然生锈,有人能帮助吗?,c++,C++,使用条带化从residences.dat读取地址记录的子集。对于n>进程,每个进程都会计算 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应忽略任何地址,>不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程不要将整个数据集读入内存中的数据结构 因为这是完全不必要的,并且消耗了太多的内存 数据示例 329267.349 4847214.382 318141.019 4851350.892 319526.06 4850
329267.349 4847214.382
318141.019 4851350.892
319526.06 4850474.347
322666.48 4840244.995
316578.529 4837299.827
320090.607 4840439.088
//read file and populate the vectors
ifstream foodbankFile("/Users/abdallaelnajjar/Documents/XCodeProjects/cpp_projects/MPI_Project2/foodbanks.dat");
ifstream residenceFile("/Users/abdallaelnajjar/Documents/XCodeProjects/cpp_projects/MPI_Project2/residences.dat");
// populate datavector
std::vector<Foodbank> foodbankData((std::istream_iterator<Foodbank>(foodbankFile)),
std::istream_iterator<Foodbank>());
//std::vector<Residence> residenceData((std::istream_iterator<Residence>(residenceFile)),
//std::istream_iterator<Residence>());
std::vector<double> distancess;
string file_contents;
Residence res;
int numProcs = 1;
int recCount = 0;
//pseudo code that I trying to implement
// While(there are more records){
// If record count % numProcs == myID
// ProcessRecord
// else
// Increment file stream pointer forward one record without processing
// Increment Record Count
//}
int numLines = 1;
while(!residenceFile.eof())
{
residenceFile >> res.x >>res.y;
//distancess.push_back(populate_distancesVector(res,foodbankData));
if ( recCount % numProcs == numLines)
{
//call the process
distancess.push_back(populate_distancesVector(res,foodbankData));
}
else
++numLines;
++recCount;
}
329267.349 4847214.382
318141.019 4851350.892
319526.06 4850474.347
322666.48 4840244.995
316578.529 4837299.827
320090.607 4840439.088
//读取文件并填充向量
ifstream foodbankFile(“/Users/abdallaelnajjar/Documents/XCodeProjects/cpp_projects/MPI_Project2/foodbanks.dat”);
ifstream-residenceFile(“/Users/abdallaelnajjar/Documents/XCodeProjects/cpp_projects/MPI_Project2/residences.dat”);
//填充数据向量
std::vector foodbankData((std::istream_迭代器(foodbankFile)),
std::istreamu迭代器();
//std::vector-ResideData((std::istream_迭代器(Residentifile)),
//std::istreamu迭代器();
向量距离;
字符串文件内容;
res公寓;
int numProcs=1;
int recCount=0;
//我试图实现的伪代码
//而(有更多的记录){
//如果记录计数%numProcs==myID
//过程记录
//否则
//增量文件流指针无需处理即可向前移动一条记录
//增量记录计数
//}
int numLines=1;
而(!residefile.eof())
{
住宅文件>>res.x>>res.y;
//距离。推回(填充距离向量(res,foodbankData));
if(recCount%numProcs==numLines)
{
//调用进程
距离。推回(填充距离向量(res,foodbankData));
}
其他的
++努姆林;
++记录;
}
您很可能没有收到任何结果,因为您的文件没有打开。最有可能的是,您在初始化流时没有正确指向它。这就是您没有看到任何输出的原因
在对流执行任何其他操作之前,应始终检查流是否已打开(可访问)。
要检查流是否已正确打开:
if (foodBankData.is_open()) {
Foodbank f;
while(foodbankData >> f.x >> f.y )
{
cout<< "X"<< f.x << "Y" <<f.y << endl; //don't forget the newline here
}
}
else {
cerr << "Error opening input file!" << endl;
exit(1);//call the error function or something else here.
}
if(foodBankData.is_open()){
食品银行;
而(foodbankData>>f.x>>f.y)
{
请告诉我们确切的问题我认为fstream没有写入.dat文件并将其输出为struct Foodbank x和yUnless您希望所有内容都在一行中您可能需要换行是的,我想读取文件只是我没有任何输出或任何异常???@ninjaDeveloper:等等……我解决了您最初的问题,一旦完成,您就可以取消注册请接受我的回答,编辑你的问题以反映你的新问题,然后含蓄地告诉我帮助你解决你的全新问题?太棒了。希望你能以这样的态度得到帮助,老兄。我问新问题,我得到了更多没有代码的伪代码。我很抱歉,但我真的需要工作代码你知道你是我吗你应该得到这一点,因为你是唯一一个如何给我的人code@ninjaDeveloper:我看到你对编辑过的问题提供了悬赏。如果是这样,那么你保留分配给谁的权利,因为现在这是一个完全不同的问题。将来需要注意的是,你应该问一个新问题,以避免出现这样的问题。那除此之外,我会尽力帮助你,因为我最初的回答与当前的问题无关。@ninjaDeveloper:“值得”是相当主观的。没有人值得任何东西,除了他们应得的。没有更多,也没有更少。