次のような行を含むファイルから読み取る必要があります。
255 0 0 15 x l Red Yellow,Gray,Blue,Green
この行の最初の 5 つの要素 (スペース区切り) を読みたいとしましょう。私は現在、次のようにしています:
std::string line;
while(file.good()) {
getline(worldfile, line);
unsigned space = line.find(" ");
unsigned r = atoi(line.substr(0, space).c_str());
line = line.substr(space + 1);
space = line.find(" ");
unsigned g = atoi(line.substr(0, space).c_str());
line = line.substr(space + 1);
space = line.find(" ");
unsigned b = atoi(line.substr(0, space).c_str());
line = line.substr(space + 1);
space = line.find(" ");
unsigned gold = atoi(line.substr(0, space).c_str());
line = line.substr(space + 1);
space = line.find(" ");
char resource = line.substr(0, space).c_str()[0];
// do something with these values
}
このコードの見た目が好きではありません。私のファイルでは問題なく動作しますが、コードの行が次から次へと続くのは好きではありません。これにより、非常に読みにくくなっています。また、自分のコード (ゲーム用) が完成したらオープン ソースとして公開する予定ですが、このようなコードを公開するのは恥ずかしいことです。
どうすればこれをきれいにできますか?