试图获取位于tar文件中的html文件的内容
trying to get content of html file which is located inside the tar file
我正在尝试获取一个html文件,该文件是位于tar文件中的一个文件,但我有一些想法,我不知道它是否正确??如果我错了,请指点我。我的想法是-
我从tar文件中创建了一个流,并将该流存储在缓冲区中以获取其内容,然后使用strstr命令搜索tar文件中的html文件(正如我所知,在我的tar文件中,html内容从"<!doctype html"开始,以<"/html/>"结束,所以我将在它们之间加载内容,实际上就是html文件)。我的方法正确吗??
问题是,当我给缓冲区很大的大小(但小于包含html+许多其他文件的tar文件的大小)时,它会在调试时产生堆栈溢出。但是,当我给出小索引时,如果我在notepad中打开tar文件,它会显示位于启动中的其他文件的内容(我已经通过在notepad中打开tar来检查,这些内容确实存在于tar文件中,但在tar文件的启动时,所以当我增加缓冲区的索引以访问位于文件中间的html文件时(实际上需要非常大的索引)它在调试方面给了stackoverflow)。我的代码是-
HRESULT AMEPreviewHandler:: CreateHtmlPreview(IStream *m_pStream) //this function is called from
// somewhere
ULONG CbRead;
const int Size= 115000 ;
char Buffer[Size+1];
(m_pStream)->Read(Buffer, Size, &CbRead );
Buffer[CbRead ] = L' ';
char *compare= "<!doctype html"; //this we have to search in tar file
// content because the html file contents starts from here
char * StartPosition;
StartPosition = strstr (Buffer,compare); //StartPosition gives Bad
// pointer when Size is small on debugging at this small size i can see some contents in buffer which i
//can find in tar file at starting
__int64 count=0;
while (StartPosition!=NULL)
{
MessageBox(m_hwndPreview,L"hurr inside the while loop",L"BTN WND",MB_ICONINFORMATION);
count=StartPosition-Buffer+1; //to get the location of
//"<!doctype html";
}
MessageBox(m_hwndPreview,L"wafter the while loop in CreateHtmlPreview ",L"BTN WND",MB_ICONINFORMATION);
return true;
}
请告诉我在tar文件中获取html文件内容的方法是正确的吗??当我给缓冲区很大的索引以访问位于tar文件中间的缓冲区内容时,为什么会出现堆栈溢出?如果我手动查看,即使我声明的大小也小于tar文件的大小?
堆栈的大小有限,因此仅分配任意大的数量是不可行的-您要么需要对其设置一个适合可用堆栈的限制,然后循环读取(如果您的"针串"(您正在寻找的)跨越两个块之间的"间隙",这会很有趣,但可以克服(见下文)。或者干脆不使用堆栈,而是使用new
来分配足够的内存来容纳整个文件。当然,如果文件很大,那就不起作用了——文件可能比你电脑的总内存还大,然后你就被塞满了,不得不回去"一次读一点"。将整个文件读取到内存中,结果却将大部分文件丢弃,这在资源方面也是浪费。
使用一个缓冲区的一种解决方案是将"针"的长度添加到缓冲区的大小中。当您第二次读取时,将针字节的长度从缓冲区的后面复制到开头,然后在"针"字节中读取缓冲区,然后从缓冲区开始搜索。只要缓冲区与"针"相比相当大,在缓冲区的同一部分搜索两次的开销就无关紧要了。
- 如何使用PHP将上传到本地主机的一个html文件重定向到磁盘上的另一个html文档
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- 编写一个 C++ 程序以将文本文件转换为 HTML 文件
- 如何以编程方式查找从 html 引用的所有文件
- 如何以C++格式输出已保存.html文件中<a href>标签中的所有链接?
- 将图形插入C 中的HTML文件
- 使用C 将JPG文件添加到输出的HTML文件中
- 如何从HTML输入中读取数据,并将数据本地写入文件以供将来访问
- 如何在 c++ 中的 HTML 文件中插入图像
- 如何在twebbrowser组件中显示HTML文件
- 在带有 C++ 的目录中打开 HTML 文件
- 使用 c++/boost::regex 提取 HTML 文件的特定部分
- ShellExecute 未打开 HTML 文件
- 在 linux 中使用 log4cplus 在 html 文件中写入日志C++
- 从文件中读取HTML标签并在终端中正确显示它们
- 使用Win32/MFC将HTML文件转换为PDF
- 为什么它只打印文本文件的一个单词,而不是将整个文本文件打印到html文件中
- 语法错误:html 映射文件中的解析错误 - ogmaps 引用错误:找不到变量:GUnload
- 使用C++在浏览器中打开 HTML 文件
- 如何使用 ShellExecute 通过 C++ 在 Windows 中打开 html 文件