map - 是我打开的文件。 line - string
上半部分有效,但下半部分没有。
getline(map, line);
getline(ssvalues, values, '|'); // Gets the name of the tileset file
tileset.loadFromFile(values.c_str());
getline(ssvalues, values, ' '); // Gets the size of the tile
tileSize = atoi(values.c_str());
getline(map, line); // Reads the next line.
ssvalues.str(line);
values = "";
// FROM HERE IT DOESNT WORK, 'values' always empty, why--
getline(ssvalues, values, '|'); // Get the X size of map
std::cout<<values;
mapSize.x = atoi(values.c_str());
getline(ssvalues, values, ' '); // Get the Y size of map
mapSize.y = atoi(values.c_str());
std::cout<<values;
我正在阅读的文件内容是:
tileset.png|32
1200|1200
答案 0 :(得分:2)
ssvalues.str(line);
这里你重置了stringstream缓冲区的“内容”,但你没有清除它的错误标志。由于它已经达到EOF,因此该标志仍然设置,未来的getline
调用将失败。
您应该在代码中为所有这些输入操作添加错误检查,并编写以下内容而不是上述内容:
ssvalues.clear();
ssvalues.str(line);