C++ Getline没有';因为某种原因我不能工作

C++ Getline没有';因为某种原因我不能工作,c++,getline,stringstream,C++,Getline,Stringstream,地图-是我打开的一个文件。 线串 上半部分工作,但下半部分不工作 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

地图-是我打开的一个文件。 线串

上半部分工作,但下半部分不工作

    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;
在这里,您重置了stringstream缓冲区的“内容”,但没有清除其错误标志。因为它已经到达EOF,所以仍然设置该标志,并且将来的
getline
调用将失败

对于所有这些输入操作,您应该在代码中添加错误检查,并编写以下内容,而不是上述内容:

ssvalues.clear();
ssvalues.str(line);

getline
绝对有效。你做错了什么。
ssvalues.str(line);
ssvalues.clear();
ssvalues.str(line);