我不是 C++ 专家,我正在编写一个程序来读取 html 文件的单行上的多个 URL,所以我编写了以下代码:
ifstream bf;
short chapters=0;
string blkhtml;
string blktmpfile; //given
string urldown; //given
size_t found = 0, limit;
while(getline(bf, blkhtml)){
while((blkhtml.find(urldown, found) != string::npos) == 1){
found = blkhtml.find(urldown);
limit = blkhtml.find("\"", found);
found=limit + 1;
chapters++;
}
}
我的问题是 found 没有更新以在while
条件下使用。正如我所见,除非另一个 std::string 类(对于字符串,str.erase() 更新它的值,但 (str.at() = '') 没有更新,否则不会更新 std::string 类),如果我想在每次循环开始时更新“找到”,并且对于条件,我可以在这里做什么。
我想做的是:
urldown
检查给定字符串是否存在重合表达式。设置它的第一个和最后一个字符。
在找到 url 之后的循环中更新 'pos',然后寻找下一个。
我已经查看了 cplusplus.com 和 cppreference.com 的所有内容,但没有找到对我有帮助的东西。
我考虑过 std::list::remove 在每个数字从 0 到 9 的循环上,然后给它一个新值,但我不知道它是否是最佳选择。