如何读取residence.dat文件C++;使用条带化算法 我必须从两个.dAT文件读取数据,但是我的控制台输出功能有问题,我的C++技能仍然生锈,有人能帮助吗?

如何读取residence.dat文件C++;使用条带化算法 我必须从两个.dAT文件读取数据,但是我的控制台输出功能有问题,我的C++技能仍然生锈,有人能帮助吗?,c++,C++,使用条带化从residences.dat读取地址记录的子集。对于n>进程,每个进程都会计算 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应忽略任何地址,>不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程不要将整个数据集读入内存中的数据结构 因为这是完全不必要的,并且消耗了太多的内存 数据示例 329267.349 4847214.382 318141.019 4851350.892 319526.06 4850

使用条带化从residences.dat读取地址记录的子集。对于n>进程,每个进程都会计算 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应忽略任何地址,>不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程不要将整个数据集读入内存中的数据结构 因为这是完全不必要的,并且消耗了太多的内存

数据示例

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:“值得”是相当主观的。没有人值得任何东西,除了他们应得的。没有更多,也没有更少。