2013-12-10 3 views
0

지도 - 내가 연 파일입니다. 줄 문자열어떤 이유로 Getline이 작동하지 않습니다.

하단은 작동하지만 하단은 작동하지 않습니다.

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

을'. 너 뭔가 잘못한거야. –

답변

2
ssvalues.str(line); 

당신은 이제 stringstream의 버퍼의 "내용"다시,하지만 당신은 그 오류 플래그를 취소하지 않았다 . 이미 EOF를 기록 했으므로이 플래그가 설정되어 있고 이후에 getline 호출이 실패합니다.

당신은 모든 입력 작업을 위해 코드에 오류 검사를 추가하고, 대신 위의 다음을 작성해야 : 절대적으로 작업을 수행 getline`

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

감사합니다, 그 일했다 : d – user3087006

관련 문제