txt 파일에서 데이터를 수집하는 코드를 작성하고 있습니다. 다음 흥미있는 숫자를 얻으려면 do-while 루프를 사용합니다. 그러나 첫 번째 do-while 루프는 완벽하게 작동하지만 두 번째 루프에서는 ifstream myfile이 Pmax라는 단어에 집착합니다. 그 원인이 무엇인지 모릅니다. =/여기 Ifstream이 단어에 붙어있어 무한 루프를 만듭니다.
(나는 그것이 같은 비트 보이는 경우에도 XML을 사용하고 있지 않다) 파서의 흥미로운 부분입니다 :ifstream myfile;
string comment;
const string filename = "data";
myfile.open(filename.c_str());
do{
myfile>>comment;
} while (comment != "</probScen>");
for (int i=0;i<numberScen;i++){
myfile>>comment;
double prov;
myfile>>prov;
probScen.push_back(prov);
}
do{
if(myfile.eof()){cout<<"EoF reached"<<endl;}
myfile>>comment;
} while (comment != "</Pmax>");
for (int i=0;i<H;i++){
myfile>>comment;
double prov;
myfile>>prov;
Pmax.push_back(prov);
}
을 그리고 여기에 내가 읽고 싶은 txt 파일의 일부이다 :
<probScen> scenario s - happening probability </probScen>
1 1
<Pmax> hour h - max price for this hour </Pmax>
1 5
제 DO-while 루프가 probScen 벌금을 처리하지만, 제 DO-동안에 myfile을 이와 같이 무한 루프를 생성 Pmax에 붙어 얻는다. 더 정확히 말하면 myfile은/probScen, 1, 1, Pmax까지 모든 단어를 읽지 만 더 이상 움직이지 않습니다. myfile.eof()는 true를 반환하지 않습니다.
도움을 주셔서 감사합니다.
이렇게 XML을 구문 분석하여 수행 할 수있는 유일한 작업은 [http://thedailywtf.com] (http://thedailywtf.com)의 기능 기사입니다. XML. 서를 구. 분석하려면 적절한 XML 구문 분석기 라이브러리를 사용해야합니다. –
이것이 나에게 (그리고 XML 파서를 사용하지 않고) 발생했다면, 디버깅 코드를 추가하여'myfile'에서 읽는 각 단어를 관찰 할 수있었습니다. 그건 내가 갇혀지고있는 곳을 보여줄거야. –
http://www.boost.org/doc/libs/1_61_0/doc/html/property_tree/parsers.html#property_tree.parsers.xml_parser –