我需要这个来保存我正在制作的游戏地图, 我使用此代码将数组保存到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是多位数。
我无法弄清楚如何在代码中实现这一点,特别是在逗号分离的情况下,我已经做了大量研究而没有发现任何内容,所以我想我会问这个可爱的社区。 p>
感谢所有帮助我使用此功能:
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++;
}
}
答案 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/