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

Смежные вопросы