我正在写一个降价编辑器(C ++ / Qt),并且我正在使用折扣库来实现这一目的。
文档:http://www.pell.portland.or.us/~orc/Code/discount/
我编写了将HTML转换为markdown的代码。
#include <mkdio.h>
#include <stdio.h>
#include <string.h>
int main()
{
FILE *out;
out = fopen("/home/abdeljalil/test.html","w");
const char* mkdown= "__hello__";
MMIOT *doc;
int flags = MKD_TOC|MKD_SAFELINK|MKD_EXTRA_FOOTNOTE;
doc = mkd_string(mkdown,strlen(mkdown),flags);
mkd_compile(doc,flags);
mkd_generatehtml(doc,out);
mkd_cleanup(doc);
}
使用输出文件是一种有效的方法吗? (每次在编辑器中更改markdown时,我都会更新GUI) 我可以直接将HTML写入字符串而不是文件吗? (找不到这样的功能) 还有其他任何优化代码的说明吗?
答案 0 :(得分:0)
在每个编辑上进行完全重新格式化文档(在进入空闲状态以便不阻止用户输入)以生成降价预览可能适用于适度大小的文档。没有看过StackOverflow JavaScript,但它可能正是这样做的。
您的图书馆文档说:
降价库中有17个公共功能,分为三类:
这些功能是基于文件的。据我所知,您不会找到任何与平台无关的便利层,允许您传递std::stringstream
或以其他方式传递C流FILE *
:
cstdio streams vs iostream streams?
您可以查看fmemopen
以避免文件创建并写入缓冲区,但是:
http://www.gnu.org/software/libc/manual/html_node/String-Streams.html
所以也许可以调查一下。
Finding the size of a file created by fmemopen
更一般地说,我可能会建议从头开始在Qt编辑器中包装一个随机的基于C的FILE流Markdown库是一个愚蠢的差事。要么拥抱像CuteMarkEd这样的现有项目,要么嵌入JavaScript引擎来运行公共降价代码,或者......某事。