2013-12-10 43 views
0

map - 是我打开的文件。 line - stringGetline由于某种原因不起作用

上半部分工作,但下半部分没有。

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 
+2

'getline'绝对不工作。你做错了什么。 –

回答

2
ssvalues.str(line); 

在这里,您重置的stringstream的缓冲区的“内容”,但你没有清除其错误标志。由于它已经打到EOF,这个标志仍然被设置,并且未来getline调用将失败。

您应该添加错误检查到你的代码对所有这些输入操作,并写来代替上述的以下内容:

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

谢谢,工作:d – user3087006

相关问题