字符串和指针位置

时间:2012-09-14 02:20:52

标签: c++ string parsing visual-c++

我正在开发一个程序,需要筛选HTML / XML垃圾链接.txt文件,查找特定模式,该文件的末尾有一个数字。这种模式应该发生10次。模式如下:“<p class="wx-temp"> 93.”93是一个温度读数和我最终想要收获的东西,但是,我找不到一种方法将93与其余字符串隔离开,因为它会每天都要改变程序理想的运行方式。我一直试图找到一种方法来定义一个不能保持不变的整数数据类型(即我不能在字符串的末尾输入93,因为它会破坏目的)并将它放在一个字符串或其他东西中类似于我可以在模式结束后设置为X个字符,或者换句话说,指针位置。对不起,漫无边际。有人可以帮助我吗?

1 个答案:

答案 0 :(得分: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);
}