(C++) WinInet InternetReadFile 从缓冲区中获取行 ( ) 并插入 Vector

问题描述 投票:0回答:0

目前我正在寻找一个很好的解决方案来将缓冲区内容分成几行(搜索 ) 并将每行插入一行到 Vector 中。我用 str.find 和 str.substr 试过了。 然而,我也担心一旦它再次从网络上读取新内容(因为缓冲区已满,现在它再次从网络上读取内容)它可能会丢失上次读取的最后一点内容。有人上次阅读的不完整行必须贴在下一次阅读的前面。

我试过这样的东西......但是,它实际上并没有我需要的那么好。 我期待任何人有一个很好的解决方案将缓冲区内容拆分成行以将行插入向量中。

提前致谢!

代码:

std::vector<string> szLines;
dwKeepReading = true;
dwBytesRead = -1;
while(dwKeepReading && dwBytesRead != 0)
{
    dwKeepReading = InternetReadFile(_RequestFunction_Here_, _Buffer_Here_, 16384, &dwBytesRead);

    if(dwBytesRead)
    {
        size_t szPos = 0;
        size_t szPrev = 0;
        while((szPos = string(_Buffer_Here_).find("\n", szPrev)) != string::npos)
        {
            szLines.push_back(string(_Buffer_Here_).substr(szPrev, szPos));
            szPrev = szPos + 1;
        }
        //Save somehow remaining content of buffer (if there ist any?) -> Add if at the front of the next Read to complete the line.
        szLines.push_back(string(_Buffer_Here_).substr(szPrev)); //This line might be incomplete -> Save and set on front of next read.
    }
    else
    {
        //Somehow check if there was anything remaining from the last Read to insert into the Vector.
    }
}
c++ vector wininet
© www.soinside.com 2019 - 2024. All rights reserved.