web和c++的交互问题!!急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web和c++的交互问题!!急相关的知识,希望对你有一定的参考价值。
要写一个网站,工作是从网站中读入数据作为一个c++程序的参数,并调用c++程序执行,并将执行的结果返回到网站上
大家可以给一个最基本的,比如说假设c++程序是参数a b返回a+b的例子
或者说有没有办法把调用的c++程序作为cgi啊 怎么做呢? 是只要是编译好的程序就可以作为cgi么? 而且谁知道该怎么用cgi去做这件事情呢?
我完全不明白网页的这些东东。。。谁能详细说一下?
function
example
#include
int
addition
(int
a,
int
b)
int
r;
r=a+b;
return
(r);
int
main
()
int
z;
z
=
addition
(5,3);
cout
<<
"The
result
is
"
<<
z;
return
0;
The
result
is
8
以看到
main
函数以定义一个整型变量z
开始。紧跟着我们看到调用addition
函数。我们可以看到函数调用的写法和上面函数定义本身十分相似:
参数有明显的对应关系。在main
函数中我们调用addition
函数,并传入两个数值:
5
和3
, 它们对应函数addition
中定义的参数int
a
和int
b。
当函数在main
中被调用时,程序执行的控制权从main转移到函数addition。调用传递的两个参数的数值
(5
和3)
被复制到函数的本地变量(local
variables)
int
a
和int
b
中。
函数addition
中定义了新的变量(int
r;),通过表达式r=a+b;,
它把a
加b
的结果赋给r
。因为传过来的参数a
和b
的值分别为5
和3
,所以结果是8。
下面一行代码:
return
(r);
结束函数addition,并把控制权交还给调用它的函数(main)
,从调用addition的地方开始继续向下执行。另外,return
在调用的时候后面跟着变量r
(return
(r);),
它当时的值为8,
这个值被称为函数的返回值。
函数返回的数值就是函数的计算结果,因此,
z
将存储函数addition
(5,
3)返回的数值,
即8。用另一种方式解释,你也可以想象成调用函数(addition
(5,3))
被替换成了它的返回值
(8) 参考技术A // function example
#include <iostream.h>
int addition (int a, int b)
int r;
r=a+b;
return (r);
int main ()
int z;
z = addition (5,3);
cout << "The result is " << z;
return 0;
The result is 8
以看到 main 函数以定义一个整型变量z 开始。紧跟着我们看到调用addition 函数。我们可以看到函数调用的写法和上面函数定义本身十分相似:
参数有明显的对应关系。在main 函数中我们调用addition 函数,并传入两个数值: 5 和3 , 它们对应函数addition 中定义的参数int a 和int b。
当函数在main 中被调用时,程序执行的控制权从main转移到函数addition。调用传递的两个参数的数值 (5 和3) 被复制到函数的本地变量(local variables) int a 和int b 中。
函数addition 中定义了新的变量(int r;),通过表达式r=a+b;, 它把a 加b 的结果赋给r 。因为传过来的参数a 和b 的值分别为5 和3 ,所以结果是8。
下面一行代码:
return (r);
结束函数addition,并把控制权交还给调用它的函数(main) ,从调用addition的地方开始继续向下执行。另外,return 在调用的时候后面跟着变量r (return (r);), 它当时的值为8, 这个值被称为函数的返回值。
函数返回的数值就是函数的计算结果,因此, z 将存储函数addition (5, 3)返回的数值, 即8。用另一种方式解释,你也可以想象成调用函数(addition (5,3)) 被替换成了它的返回值 (8)本回答被提问者采纳 参考技术B 你可以试试重定向,
输入重定向 (<) 追加(<<)
输出重定向 (>) 追加(>>)
SORT < PHONE.DAT > SORTED.DAT
SORT从phone.dat文件得到数据, sort的输出重定向到sorted.dat文件
输入输出的文件名可以用session一类的代替,
建立输入文件代替键盘输入,执行命令,等待命令执行完成或超时,返回输出文件内容
linux重定向也是大同小异, 可以都详细搜索搜索追问
还是不太明白啊 以前从来没做过网站 有什么详细的建议么?
要是有效的话我500分都给啦
网站端用什么做呢? javascript?php还是直接写cgi啊?
能给个最简单例子情况的详细做法么?
php一类的现在都不熟悉了,你看看你熟悉哪种的动态网页技术,然后熟悉下执行命令行的函数,和读写文件什么的
你说的参数是作为命令行参数,还是执行程序后从键盘输入的?
如果是命令行参数直接找找命令行的函数就行,比如php的exec,system
http://php.freehostingguru.com/group.php-14.php
我现在已经用c#解决了这个问题 但是必须要等到c++程序全部运行完以后才能够得到结果
不知道有什么方法可以随时将命令行函数的输出读出来并显示....
因为程序要运行几个小时....总不能这样等输出吧.....
我现在采用的方法是p.StandardOutput.ReadLine();
但是好像也不太行....
Process.BeginOutputReadLine 方法
.NET Framework 2.0 其他版本
注意:此方法在 .NET Framework 2.0 版中是新增的。
在应用程序的重定向 StandardOutput 流上开始异步读取操作。
http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.beginoutputreadline(v=vs.80).aspx
最下面有例子
主要这2行
--------
p.OutputDataReceived += new DataReceivedEventHandler(SortOutputHandler);
--------
private static void SortOutputHandler(object sendingProcess,
DataReceivedEventArgs outLine)
....
我的邮箱是什么? 百度有邮箱么?
C++中怎么用API作图啊 ,要包含啥头文件吗? 在先急等
vc6.0 C++中怎么用API作图啊 ,要包含什么头文件吗?
不是用MFC哦。希望有例子,画个圆 矩形等等
MSDN上有WIN32程序开发的例子。 你用向导添加一个WIN32项目,再自己重写OnPaint()函数,最后用InvalidateRect(),来激发一个重画事件。
做图要用到API:
void OnPaint(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam)
PAINTSTRUCT ps;
HDC hdc;
hdc=BeginPaint(hWnd,&ps); //GetDC本质上调用了这个
//在这里加画图代码。如:
Ellipse(hdc,0,0,100,100); //画圆
Rectangle(hdc,0,100,100,200);//画矩形
TextOut(hdc,50,50,_T("Hello, World"),6); //文字也是图
EndPaint(hWnd,&ps); //释放DC handle
参考技术A MFC的绘图类其实是对Windows GDI API的封装,目前发展到GDI+,其实直接使用GDI+也是相当强大的,我给你介绍一下怎么使用windows的GDI+吧:
(1)准备使用GDI+ 的API
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
(2)列子:
VOID Example_DrawLine(HDC hdc) // 函数参数为当前绘图设备上下文的句柄
Graphics graphics(hdc); // 构造一个graphics对象,然后绘图就引用此对象方法即可,厉害啊
Pen blackPen(Color(255, 0, 0, 0), 3); // 创建画笔
Point point1(100, 100); // 两个点
Point point2(500, 100);
graphics.DrawLine(&blackPen, point1, point2); // 画一条线
VOID Example_DrawRectangle(HDC hdc)
Graphics graphics(hdc);
Pen blackPen(Color(255, 0, 0, 0), 3);
Rect rect(0, 0, 200, 200); // 矩形
graphics.DrawRectangle(&blackPen, rect);
VOID Example_DrawEllipse(HDC hdc
Graphics graphics(hdc);
Pen bluePen(Color(255, 0, 0, 255));
Rect ellipseRect(0, 0, 200, 100);
graphics.DrawEllipse(&bluePen, ellipseRect);
相信你看了这几个列子应该知道怎么使用GDI+ 的API来作图了 参考技术B 一个不停地显示随机矩形的程序
#include <windows.h>
#include <stdlib.h>// for the rand function
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
void DrawRectangle (HWND) ;
int cxClient, cyClient ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
static TCHAR szAppName[] = TEXT ("RandRect") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc= WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName= NULL ;
wndclass.lpszClassName= szAppName ;
if (!RegisterClass (&wndclass))
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
hwnd = CreateWindow (szAppName, TEXT ("Random Rectangles"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (TRUE)
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
if (msg.message == WM_QUIT)
break ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
else
DrawRectangle (hwnd) ;
return msg.wParam ;
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
switch (iMsg)
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
void DrawRectangle (HWND hwnd)
HBRUSHhBrush ;
HDC hdc ;
RECT rect ;
if (cxClient == 0 || cyClient == 0)
return ;
SetRect (&rect, rand () % cxClient, rand () % cyClient,
rand () % cxClient, rand () % cyClient) ;
hBrush = CreateSolidBrush (
RGB (rand () % 256, rand () % 256, rand () % 256)) ;
hdc = GetDC (hwnd) ;
FillRect (hdc, &rect, hBrush) ;
ReleaseDC (hwnd, hdc) ;
DeleteObject (hBrush) ;
参考资料:Windows程序设计中文版(CHM)
参考技术C #include "windows.h"#include "winuser.h"
#include "wingdi.h"
HWND hwnd = 0; //如果是0,则表示在屏幕上画
HDC hdc = GetDC(hwnd);
Ellipse(hdc,0,0,100,100); //画圆
Rectangle(hdc,0,100,100,200);//画矩形
ReleaseDC(hwnd,hdc); 参考技术D 先包含windows.h再说。
以上是关于web和c++的交互问题!!急的主要内容,如果未能解决你的问题,请参考以下文章