2014-12-30 3 views
-1

나는 다른 도시와 도로가있는 파일을 가지고 있는데, 나는 빌 (프랑스어로 된 도시)이라는 클래스와 루트 (프랑스어로 된 도로)라는 클래스를 작성했다.문자열로 된 객체 생성

Ville *myCity = new Ville("myCity"); 

도로 생성자 :

Route *myRoad = new Road("myRoad",400, 130, myCity1, myCity2); 

빌 생성자처럼 호출 경로의 vectof에 빌 내 모든 경로의 벡터에 내 모든 빌을 둘 필요 여기서 인수 a 도로 이름, 크기, 최대 속도 및 도로가 연결되어있는 두 도시를 다시 표시합니다.

같은 파일보기 :

< ville> 

    Paris 
    Berlin 
    ... 
< /ville> 
< route> 
    A0 400 130 Paris Berlin 
    ... 
</route> 
내가 데이터 추출을위한 것으로했다

:

Ville *element = new Ville (element); 
:

std::string element; 
    int statut = 0; 
    while(fichier >> element) 
    { 
     if(element == "</ville>" || element == "</route>") 
     { 
      statut = 0; 
      fichier >> element; 
     } 
     if(element == "<ville>" || statut == 1) 
     { 
      if(statut == 0) 
      { 
       fichier >> element; 
      } 
      cout << "Ville: " << element << endl; 
      statut = 1; 
     } 
     if(element == "<route>" || statut == 2) 
     { 
      if(statut == 0) 
      { 
       fichier >> element; 
      } 
      cout << "Route: " << element; 
      fichier >> element; 
      cout << " Taille: " << element; 
      statut = 1; 
      fichier >> element; 
      cout << " Speed: " << element; 
      fichier >> element; 
      cout << " Relie: " << element; 
      fichier >> element; 
      cout << " à " << element <<endl; 
      statut = 2; 
     } 
    } 
    } 
    else 
    { 
     cout << "Error: Can't open the file" << endl; 
    } 

나는 내가 뭔가를 할 수 있도록하는 방법을 찾고 있어요

개체로 쉽게 변형되도록 데이터를 추출하는 방식을 변경해야합니까?

+0

나는 그 질문을 이해하지 못한다. 'new Ville ("myCity")'를 할 수 있고'element'가 문자열이라면'new Ville (element.c_str())'을 원하나요? – Barry

+0

xml 파서를 찾으십니까? http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c 또는 http://lars.ruoff.free.fr/xmlcpp/btw. 마지막 행을 수정하십시오 - 두 가지 다른 요소에 대해 요소를 사용하십시오 – Palo

+0

변수를 사용하는 도시는 도시 자체와 동일한 이름을 가지므로 목적으로 수행했습니다. – mel

답변

0

좋아 도로 데이터를 검색

cities[element] = new Ville(element); 

과 : 당신이 도시의 데이터를 검색

std::map<string, Ville*> cities; 
std::vector<Route> roads; 

C++에서 직접하려고하는 작업을 수행 할 수 없습니다.

그런 다음 파일에서 '요소를'밖으로 읽기, 다음 코드를 사용하여이지도를 사용할 수 있습니다

당신의 그것이 myCities 부르 자하는 map<string, Ville*>을 만들 수 있지만 해결의 비트가있다 :

myCities[element] = new Ville(element); 

이 시점부터 myCities["whichever city you want"]에 액세스 할 수 있습니다. C + +는 동적으로 명명 된 변수를 지원하지 않기 때문에 이것 이외의 다른 방법을 생각해 볼 수는 없습니다.

0

당신이 필요로하는 것으로 보인다 std::map : 당신 때문에, 당신은

roads.push_back(Route(name, size, speed, 
         cities.at(cityName1), 
         cities.at(cityName2))); 
관련 문제