我必须从具有如下行的文件中读取:
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
}
我不喜欢这段代码的外观。虽然它对我的文件非常有效,但我不喜欢它只是一行又一行的代码。这使得它真的很难阅读。我还计划在完成后将我的代码(用于游戏)作为开源发布,但我对发布这样的代码感到羞耻。
我怎样才能清理这个?