此python代码用C/ c++编写

This python code in C/C++

本文关键字:c++ 编写 python 代码      更新时间:2023-10-16

我有这样的代码:

#!/usr/bin/python
import urllib
print 'Insert page to download:'
page = raw_input()
filehandle = urllib.urlopen(page)
myFile = open('file.html','w')
for lines in filehandle.readlines():
    myFile.write(lines  )
myFile.close()
filehandle.close()

这基本上只是下载输入的网页并将其写入file.html。

我想知道如何使用C/c++做到这一点。如果有一种方法,但它不像python那样直接,我能做什么或搜索得到类似的结果?

另外,我知道套接字编程的存在,但我还不是很好,我只是在寻找一个快速和肮脏的解决方案。

谢谢。

尝试libcurl库,它为C(以及包括c++在内的许多其他语言)提供URL下载函数。

如果你正在为Windows编写代码,你也可以使用Windows Internet库。

我推荐libcurl,这是我通常使用的快速和肮脏的解决方案。

通常,当您在桌面环境(如GNOME和KDE)中编程时,您可以使用该环境中的功能,这些功能可以在GUI中使用,并且与文件选择器窗口、进度条等一起使用更容易。

如果您为GNOME环境编程(或安装了GNOME库),那么这个程序几乎与您的Python程序做相同的事情,除了它不转换行尾字符,它逐字复制CR和LF,并且它使用程序参数而不是提示用户输入。哦,它没有给出任何错误信息,它只是退出,不知道为什么。但它确实有一个优点,它可以在gnome可以处理的任何两个文件之间进行复制,无论是本地文件还是远程文件系统,并且您可以使用不带路径的文件名或使用~作为您的主目录。

/*
 File: mycopy.c
 Compile with: gcc -Wall -g -c mycopy.c `pkg-config --cflags gio-2.0`
 Link with: gcc -Wall -g mycopy.o -o mycopy `pkg-config --libs gio-2.0`
 See: http://stackoverflow.com/questions/6726499/this-python-code-in-c-c
*/
#include <glib-object.h>
#include <gio/gio.h>
#include <stdlib.h>
int main( int argc, char*argv[])
{   GFile *source, *dest;
    gboolean success;
    if( argc!=3 )
        exit( 2 );
    g_type_init();

    source  = g_file_new_for_commandline_arg( argv[1] );
    dest    = g_file_new_for_commandline_arg( argv[2] );
    success = g_file_copy( source, dest, 0, 0, 0, 0, 0 );
    if( !success )
        exit( 2 );
    exit( 0 );
}

如果您想在Linux中快速地从网页复制,那么您可以挂载目录(也称为。"网站")放入文件系统,并在代码中使用splice(参见man 2 splice)来传输数据。我最近没有检查过这个,但是大多数现成的库在我上次检查时都没有这样做。您还可以(最好?)使用shell命令mountcp来完成此操作(上次我进行基准测试时,对于任何大型文件,这比使用libcurl或curl或wget shell命令的C代码更快)。

快速而肮脏的答案是使用python代码并从您的c++代码中剥离,或者嵌入python并运行该代码…

无论如何你想要的是一个C/c++的http客户端库。我曾经使用过C语言的libcurl,它是那种令人愉快的东西!