2012-09-14 2 views
0

끝 부분에 숫자가있는 특정 패턴에 대해 HTML/XML 쓰레기에 탔던 .txt 파일을 살펴 봐야하는 프로그램을 만들고 있습니다. 이 패턴은 10 번 발생해야합니다. 패턴은 다음과 같습니다 : "<p class="wx-temp"> 93."93은 온도를 읽는 것이고 결국에는 추수하려고합니다. 그러나 93에서 나머지 문자열을 분리 할 수있는 방법을 찾을 수 없습니다. 매일 바뀌기 때문에 프로그램이 이상적으로 운영 될 것입니다. 나는 상수가 될 수없는 정수 데이터 타입을 정의하는 방법을 찾으려고 노력했다. (즉, 목적을 무력화시킬 수 있기 때문에 문자열의 끝에 93을 입력 할 수 없다. 비슷하게 시작하기 위해 패턴의 끝 뒤, 즉 포인터 위치에서 X 문자 수로 설정할 수 있습니다. 무서워서 미안해. 누군가 나를 도울 수 있습니까?문자열 및 포인터 위치

+0

나는 (http://stackoverflow.com/questions/12360905/getting-10-day-weather-temperature-forecasts-in-c) 어제 [당신의 매우 유사한 질문] 대답하지 않았다? 합리적인 답을 줄 수 있도록 사용자 번호가 포함 된 마크 업 조각을 보여 주어야합니다. – paddy

+0

@paddy : 백틱을 사용해야합니다. 그렇지 않으면 꺾쇠 괄호가 표시되지 않습니다. –

+0

[정규식] (http://en.cppreference.com/w/cpp/regex)으로 검색해보십시오. –

답변

0

전체 파일을 단일 문자열로로드했다고 가정합니다. 이는 무리한 것은 아닙니다.

string html; 
//(Some code that reads into a big string) 

이제이 태그를 찾아보십시오.

string delimiter("<p class=\"wx-temp\">"); 
vector<int> temperatures; 

size_t pos = html.find_first_of(delimiter); 
while(pos != string::npos) 
{ 
    // Skip past the tag (to the temperature) 
    pos += delimiter.size(); 
    if(pos >= html.size()) break; 

    // Extract it (C-style) and chuck it into the vector. 
    int temperature = atoi(html.c_str() + pos); 
    temperatures.push_back(temperature); 

    // If you want to stop after the first 10: 
    if(temperatures.size() == 10) break; 

    // Find the next tag 
    pos = html.find_first_of(delimiter, pos); 
}