我想通过网站展示我的C ++项目

时间:2009-09-25 22:54:44

标签: c++ terminal integrate

问题在于,它是C ++。我创建它们的方式使得它们总是通过终端/控制台窗口运行并等待用户输入,或者只是采取样本输入并运行它。输出也始终到终端屏幕或有时到文件。我不太确定如何将所有这些内容与网站集成,同时保留源代码,如果可能的话。我想我想要的目标是让我使用的任何网站都像一个接受用户输入的终端窗口,然后发送它来运行有问题的C ++程序并返回输出(无论它是什么) ,只需对源代码进行最少的修改。要么是设置更自动化的页面,用户只需单击“开始”,程序就会使用示例输入运行。

说到网络,我认为自己是HTML,CSS,PHP& amp; MySQL,以及使用Javascript的初学者,所以如果可以使用这些语言完成,那将是非常棒的。如果没有,不要害怕向我展示新的东西。

6 个答案:

答案 0 :(得分:3)

引入Web的最简单的交互模型是一个应用程序,它预先输入其输入并在stdout上生成其输出。在这种情况下,如提到的未知海报,您可以使用CGI。但是由于CGI的性质,如果所有信息都是从一个页面中的用户收集,发送到应用程序并在一个页面中返回结果,那么这只会起作用(在最简单的意义上)。这是因为每次使用CGI调用页面都会产生一个新的独立进程来提供请求。 (现在还有其他更有效的解决方案,例如FastCGI,它可以保留一系列进程。)如果您的应用程序是交互式的,那么它会收集一些信息,显示一些结果,打印一些选项,收集更多用户输入,然后产生更多的结果,它将需要调整。

这是关于C ++中最简单的CGI程序:

#include <iostream>
int main(int argc, char* argv[])
{
    std::cout << "Content-type: text/plain\n" << std::endl;
    std::cout << "Hello, CGI World!" << std::endl;
}

所有这一切都是返回内容类型后面跟一个空白行,然后是实际内容和平常无聊的问候语。

要接受用户输入,您可以用HTML编写表单,POST目标将是您的应用程序。它将以通常的HTTP样式传递包含请求参数的字符串:

foo.cgi?QTY=123&N=41&DESC=Simple+Junk

然后,您需要解析查询字符串(通过QUERY_STRING环境变量传递给程序)以从表单收集输入字段以传递给您的应用程序。请注意,因为解析参数字符串是大量安全漏洞的来源。绝对值得为C ++找到一个CGI库(谷歌搜索显示很多),为你解析。查询数据可以通过以下方式获得:

const char* data = getenv("QUERY_STRING");

因此,您至少需要更改应用程序以接受来自name=value对的查询字符串的输入。如果你不想,你甚至不需要生成HTML;只需将内容类型返回为text/plain即可。然后,您可以稍后使用HTML进行改进(并相应地更改内容类型)。

还有其他更复杂的解决方案,包括整个网络框架,例如Wt。但这会对您的应用程序进行大量更改,您说您希望避免这些更改。

答案 1 :(得分:2)

几乎偏离主题,但您可能需要查看Wt

答案 2 :(得分:1)

您是否考虑过使用cgi ...它的19世纪技术让网络服务器执行用C / C ++编写的程序来运行和生成输出

我对此并不了解......但我将它用于一些学校项目

答案 3 :(得分:0)

使用截屏视频全部显示。我使用的是Camtasia Studio,但其中有很多:http://en.wikipedia.org/wiki/Screencast

Camtasia甚至会生成您需要上传到Web服务器的所有HTML和Flash。买一个漂亮的USB麦克风,写一个你要说的内容和节目的脚本。

答案 4 :(得分:0)

炫耀你的项目的目的是什么?你想给你的朋友或雇主留下深刻的印象吗?

通过Web界面模拟或移植C ++控制台应用程序似乎不可行。 我想你可以在服务器端脚本和C ++二进制文件之间编写一个桥梁,它将用户输入传递给你的应用程序,然后通过web界面返回结果。请记住,这对您来说是一项艰巨的任务。

Ruby在他们的网站上有一个编译器,demonstrates可以这样做。

然而,网络上没有人希望在网络浏览器中运行您的C ++应用程序。此外,我认为任何对运行C ++应用程序感兴趣的人都会完全放心下载你制作并运行它的C ++二进制文件(除了安全风险)但是当你考虑它时我们会下载应用程序并一直运行它们,同时相信来源。

我有一个我为letting employers see my work创建的投资组合网站。看一看,它会让你了解另一种可以做事的方法。

基本上我提供下载,视频,屏幕截图和链接的二进制文件。如果用户没有时间(或适当的计算机)来运行我的项目,用户可以用它快速查看我的工作。

祝你好运

答案 5 :(得分:0)

我没有这方面的经验(除了听BART上的人谈论在C中实现他的服务器端代码),但你可以考虑看看SWIG(http://www.swig.org/)。它允许您包装C ++,以便在使用PHP等语言时可以访问C ++代码。