C++ 这是C/C++;
我有以下代码:C++ 这是C/C++;,c++,python,c,C++,Python,C,我有以下代码: #!/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
#!/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那样直截了当,那么我可以做些什么或搜索以获得类似的结果
另外,我知道socket编程的存在,但我还不是很擅长它,我只是在寻找一个快速而肮脏的解决方案
谢谢。试试这个库,它为C(以及包括C++在内的许多其他语言)提供URL下载功能
如果你正在编写Windows代码,你也可以使用这个库。
< P>快速而肮脏的答案是从你的C++代码中使用那个Python代码和shell,或者嵌入Python并运行那个代码…< /P>无论如何,您需要的是一个用于C/C++的http客户端库。我有过从C开始的体验,这是一件非常愉快的事情 我是第二个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 );
}
/*
文件:mycopy.c
使用:gcc-Wall-g-cmycpy.c`pkg config--cflags gio-2.0编译`
链接:gcc-Wall-gmycopy.o-omycopy`pkg config--libsgio-2.0`
见:http://stackoverflow.com/questions/6726499/this-python-code-in-c-c
*/
#包括
#包括
#包括
int main(int argc,char*argv[])
{GFile*源,*dest;
巨大的成功;
如果(argc!=3)
出口(2);
g_type_init();
source=g_file_new_用于命令行_arg(argv[1]);
dest=g_file_new_用于命令行_arg(argv[2]);
成功=g_文件_副本(源、目标、0、0、0、0);
如果(!成功)
出口(2);
出口(0);
}
如果您想在Linux中快速地从网页复制,那么可以将目录(也称为“网站”)装入文件系统,并在代码中使用splice(请参见
man 2 splice
)来传输数据。我最近没有检查过这个,但上次检查时,大多数现成的库都没有这样做。您还可以(最好?)使用shell命令mount
和cp
(上次我进行基准测试时,对于任何大型ish文件,这比使用libcurl的C代码或curl或wget shell命令更快)。您使用的是什么操作系统?此外,你想在C或C++中解决方案吗?这不是同一种语言,我用的是Ubuntu。我知道它们现在是同一种语言,但是C++的解决方案会更好。谢谢,我会研究它。谢谢,我会研究它。好吧!非常感谢你!!