C ++在获取索引位置后如何获取子串

时间:2012-07-23 16:14:08

标签: c++

我正在尝试解析this page

string str2 ("<span class=\"time_rtq_ticker\"><span id=\"yfs_l10_usdsgd=x\">");
  size_t found;

  // different member versions of find in the same order as above:
  found=sdata.find(str2);
  if (found!=string::npos)
    cout << "first 'needle' found at: " << int(found) << endl;

我得到“针”的位置后,我怎样才能获得货币汇率,我希望它在

之后停止解析

对不起,我正在为我的一个小项目做这件事,不是商业性的,只是一些小型工作

3 个答案:

答案 0 :(得分:3)

雅虎不为此提供网络服务吗?哪个更简单。检查一下:

http://developer.yahoo.com/finance/company.html

答案 1 :(得分:2)

std::string.substr(pos,npos)将为您提供std::string来自pos {found的情况)npos。要找出长度,您可能需要查找字符串“&lt;” (下一个html标签的开头)并减去。

答案 2 :(得分:1)

我认为您应该使用Yahoo Finance提供的API,如@Adel Boutros所说,或者如果你想自己解析这样的事情,你至少应该使用一个完整的HTML解析器类。

有很多变化,但实质上,他们会阅读标签并为您提供数据内容 - 您只需要添加一些处理程序来捕获您感兴趣的标签。每个解析器的工作方式略有不同,并且具有不同的优点速度还是简单,但它们非常直接,而且会更稳定?而不是你在做什么。

这是关于选择C ++ HTML Parser的一个有趣的问题(但它看起来很不稳定)。就个人而言,我只是对python进行外部调用来解析它,或者制作一个java EXE,你可以调用它来解析下载的网页为你更有用的格式(我更喜欢python,但更多的人知道Java和它'我也会工作。)

https://stackoverflow.com/questions/489522/library-recommendation-c-html-parser