将txt文件加载到用逗号C ++分隔的2个dim数组值中

时间:2014-03-30 21:39:44

标签: c++ arrays text-files ifstream

我需要这个来保存我正在制作的游戏地图,  我使用此代码将数组保存到txt文件:

void saveMap(string name){
    ofstream myFile;
    myFile.open(name.c_str());
    for (int y = 0; y < 100; ++y){
        for (int x = 0; x < 257; ++x){
            myFile << blocks[x][y].get() << ",";
        }
        myFile << '\n';
    }
    myFile.close();
}

所以我最终会得到类似的东西:

0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,1,1,0,0,1,1,0,
0,1,1,0,0,1,1,0,
0,0,0,2,2,0,0,0,
0,0,2,2,2,2,0,0,
0,0,2,2,2,2,0,0,
0,0,2,0,0,2,0,0,

(类似地形和257 x 100除外) 然后我想将其加载到块数组中。 我需要用逗号分隔值,因为我将保存的一些块id是多位数。

我无法弄清楚如何在代码中实现这一点,特别是在逗号分离的情况下,我已经做了大量研究而没有发现任何内容,所以我想我会问这个可爱的社区。


感谢所有帮助我使用此功能:

void loadMap(string name){
    std::ifstream file(name.c_str());
    std::string line;
    int i=0,j=0;
    while (std::getline(file, line)){
       std::istringstream ss(line);
       std::string data;
        while (std::getline(ss, data, ',')){
            blocks[i][j].set(atoi(data.c_str()),1,true);
            i++;
        }
        i=0;
        j++;
    }
}

2 个答案:

答案 0 :(得分:2)

您可以告诉getline使用自定义字符作为下一个“行”

std::ifstream file("data.txt");
std::string line;
while (std::getline(file, line))
{
    std::istringstream ss(line);
    std::string data;
    while (std::getline(ss, data, ','))
    {
        // use data
    }
}

答案 1 :(得分:0)

我希望此代码可以帮助您阅读逗号分隔文件。

ifstream infile( "test.txt" );

  while (infile)
  {
    string s;
    if (!getline( infile, s )) break;

    istringstream ss( s );
    vector <string> record;

    while (ss)
    {
      string s;
      if (!getline( ss, s, ',' )) break;
      record.push_back( s );
    }

    data.push_back( record );
  }
  if (!infile.eof())
  {
    cerr << "Fooey!\n";
  }

在这里阅读更多 来源:: http://www.cplusplus.com/forum/general/17771/