2013-12-10 63 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

相關問題