谁推荐个好的C++编辑器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁推荐个好的C++编辑器?相关的知识,希望对你有一定的参考价值。

参考技术A 分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

最近觉得以前用的Turbo C++编辑器太难操作了,请问下谁知道有什么美观又好操作的C++编辑器吗?我觉得FLASH的脚本编辑界面就很好,哪位大虾给推荐一个?重谢!

解析:

C++开发常用工具“群英会”

开发环境

---->Turbo c

DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:)

---->Visual C++ 6.0/7.0

稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。

---->BCB

Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE,速度和稳定性稍逊,但对c++标准支持的程度较好。

---->Cygwin

Windows平台下的C++编译器,基于gcc,又完全兼容Window特有的东西,比如对winsock的支持。从cygwin可以找到有关Cygwin的详细信息。

---->Dev-c++

Windows平台下,一个类似VC、BCB的c++ IDE开发环境,属于共享软件。界面亲切优雅,size也不大,其4.9.x版有中文语言支持,无需汉化。编译器基于gcc,完全支持STL。但是对于规模较大的软件项目,恐怕难以胜任。可以从bloodshed/dev/devcpp找到有关Dev-c++的有关信息。

---->Source Insight

有着和Dev c++一样漂亮的界面,提供代码的编辑和察看功能,具有丰富的语法加亮功能,可以像VC一样自动弹出成员函数的提示,并具有快速方便的函数跳转功能(但是跳转速度似乎有点慢)。只是默认设置不适合时,需要仔细的调整和修改。无法查找经typedef之后的名字。

辅助工具

---->Visual Assist

VC IDE环境下的辅助编程工具,能识别各种关键字、函数、成员变量,自动给出tip,并自动更正大小写错误,标示拼写错误等。是VC开发的良好伴侣。

---->Understand for C++

一款c/c++IDE编程的辅助工具,支持反向工程,代码导向和一些统计功能,从scitools可以找到有关Understand for C++的详细信息。

程序编辑器

---->EditPlus

一款很不错的文本编辑软件,功能强大却又十分轻巧。支持不同语言的语法加亮,还有Project组织功能,具有丰富的自定义功能。通过设置User Tool,可以和其他语言编译器结合,形成一个简单的IDE。

---->Ultra Edit

功能和EditPlus相当,通过脚本文件提供的配置功能可以定制编辑环境,但自6.0版以后一直没多大变化,就编程而言,自定义设置没有EditPlus方便。

---->EMACS

公认的世界上功能最多,最复杂的文本编辑器,其实也可以当作程序员用的编辑器。

---->Visual Slick Edit

一个功能强大的程序员用编辑器。最值得一提的是其定制功能,很好用,可以和EMACS相比。自带了一套PCODE解释器,用c的语法,还可以挂接动态库。配合mingw一起使用很方便。从slickedit可以找到有关SlickEdit的详细信息。

---->IQEdit

全功能的程序员用编辑器,界面很漂亮,从pwksofare可以找到有关IQEdit的详细信息。

UML/建模

---->Rational Rose

强大的建模工具,早已“家喻户晓”,功过自然不必多加评说了。从rationalsofare可以找到有关Rational Rose的详细信息。

---->Visual Modeler

MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品,是Rose的简化版。

---->Visio

Microsoft的建模工具,感觉更人性化一些,但功能没有Rose多、强、专,支持正向的代码生成,以及对代码的反向工程。

---->Together

另一款功能强大的建模工具,用java编写而成,口碑不错,不过速度稍稍慢了一些。从togethersoft可以找到有关Togather的详细信息,另外,以下网址提供了一个有关Together的教程: cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6

---->Visual UML

支持多种语言类型,比如:VC、VB、DELPHI、CORBA IDL等,可以直接从UML设计图生成代码,简单易用,完全适合Personal use,界面也很清爽。从visualObject可以找到有关Visual UML的详细信息。

---->SmartDraw

通用图表制作软件,可以用来制作组织机构图、流程图、统计图表等。随带有图库,基本满足制作各类图表的需要。从 *** artdraw可以找到有关SmartDraw的详细信息。

---->PlayCase

国产面向对象的建模软件,兼容UML和IDEF,轻量级软件,只是界面看起来有点简朴,乃是高展先生用Delphi完成的。

版本控制

---->ClearCase

Rational的版本控制管理软件,功能强大,可以控制多种类型的文档,甚至包括Word、Excel、PowerPoint文档。但使用复杂,不易上手,且不是免费软件。

---->CVS

为基于Web的分布式协同开发提供了版本控制管理手段,且是免费软件,可以通过脚本定制功能。但在权限控制方面功能相对较弱。

---->VSS

微软的版本控制管理工具,功能相对简单,适合于小型团队开发,将其整合到微软的其他开发工具中,使用起来十分方便。

---->SourceOffSite

微软为开发人员提供的远程访问VSS数据库的工具,使数据库得以远程更新,以支持远程办公。其他的版本管理工具还包括:PVCS、VCS、RCS等。

XML

---->expat

用于读取和处理XML文档的c函数库,最初是James Clark的个人作品,简单轻巧,且速度快。但支持的编码方式有限,最遗憾的是不支持中文。从expat.sourcefe可以找到有关expat的详细信息。

---->xml4c

IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,适合于大规模的xml应用。若只是很小范围的应用,则非最佳选择,毕竟,你需要“背负”约12M左右的dll的沉重负担。从alphaworks.ibm/tech/xml4c可以找到有关xml4c的详细信息。

---->Xerces c++

Apache的XML项目,同样是c++实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是目前只支持少数的字符编码,如ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。从 xml.apache/xerces-c可以找到有关Xerces c++的详细信息。

测试

---->CppUnit

一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,从JUnit移植而来,JUnit是Java语言的单元测试框架。从cppuint.sourcefe可以找到有关CppUint的详细信息。

---->Rational ROBOT

Rational的自动化测试工具,通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能,有助于对GUI软件进行功能测试;其VU方式的脚本录制功能,有助于测试某些软件的数据通讯功能。

---->Rational Purify

同样是Rational的自动化测试工具,不需要被测程序的源代码,可以用来检查内存访问错误、Windows API调用错误等,以完成软件的可靠性测试,属于白盒测试。

其他的Rational测试工具还包括:TestFactory、PureCoverage、TestManager等。

日志

---->log4cpp

一个用于日志记录的c++函数库,可以将内容以定制的方式记录到不同的目的地,比如:文件、控制台syslog等,同时还可以通过控制记录级别来屏蔽掉某些无关记录。从log4cpp.sourcefe可以找到有关log4cpp的详细信息。

注释

---->Doc++

注释文档生成工具,根据源程序中的文档注释,可以输出TeX和html格式的文档。除了支持c/c++语言外,还支持IDL和java。仅提供命令行使用方式。从docpp.sourcefe可以找到有关Doc++的详细信息。

---->Doxygen

注释文档生成工具,较之Doc++功能更为齐全,可以生成包括HTML、PDF、RTF在内的多种格式的文档,并有GUI界面,除了支持c/c++语言外,还支持IDL、java、php、c#等。从stack.nl/~dimitri/doxygen可以找到有关Doxygen的详细信息。

安全分析的几个好的工具网站的使用

最近在工作中还是遇到了一些攻击者追查等等事情,结合自己过去做过一年的安全分析师的经验,对几款比较好的追踪溯源网站的使用做一个简介。

一、关联神器passivetotal

1、网址:https://community.riskiq.com/

2、简介:常用来搜索IP、Domain、URL、whois信息、ipwhois信息等,是一个存储数量比较全面,信息量较大,而且可以和时间关联分析。实现这些维度的互查反查是很重要的一个功能。需要注册哦。

3、截图:

技术分享图片

技术分享图片

技术分享图片

二、样本神器virustotal

1、网址:https://www.virustotal.com/#/home/upload

2、简介:可以查询样本在多家杀毒引擎的扫描检测结果,另外可以查询IP、url、hash,这样可以关联下载downloadurl 、恶意域名、IP,以及恶意的样本hash。(注册之后可付费,在线样本可下载)

3、截图:

技术分享图片

4、自己查看vt文档写的一个apilib库

  1 #!/usr/bin/env python
  2 #-*-coding:UTF-8-*-
  3 #引入头文件
  4 import os
  5 import sys
  6 import json
  7 import urllib
  8 import urllib2
  9 import hashlib
 10 import postfile
 11 import simplejson
 12 
 13 #全局变量
 14 #APIKEY = None
 15 APIKEY = 033e1a2ae071f8800d558a968717c2674f8eb728cfb6b470d4713dd744600fb7
 16 MYVTOBJ = None
 17 CRONTOL_BIT = 0
 18 #创建VirusTotal类
 19 class VirusTotal:
 20     def __init__(self,apikey):
 21         self.virus_dict = {}
 22         self.apikey = apikey
 23         
 24     def get_virus_dict(self):
 25         return self.virus_dict
 26         
 27     def upload_one_check_file(self,check_file):
 28         check_host = "www.virustotal.com"
 29         selector = "https://www.virustotal.com/vtapi/v2/file/scan"
 30         fields = [("apikey",self.apikey)]
 31         file_name = os.path.basename(check_file)
 32         try:
 33             file_to_check = open(check_file,rb).read()
 34         except Exception,ex:
 35             #log.log(ex,3,1)
 36             return (-1,ex)
 37         file_struct = [("file",file_name,file_to_check)]
 38         try:
 39             result_json = postfile.post_multipart(check_host,selector,fields,file_struct)
 40         except Exception,ex:
 41             #log.log(ex,3,2)
 42             return (-1,ex)
 43         return result_json
 44         
 45     def upload_check_files(self,files_list):
 46         result_json_list = []
 47         if len(files_list) <= 0:
 48             return (-1,files_list error)
 49         for item in files_list:
 50             ret = self.quick_check(item)
 51             result_json_list.append(ret)
 52         return result_json_list
 53         
 54     def check_file_rescan(self,scanid):
 55         url = "https://www.virustotal.com/vtapi/v2/file/rescan"
 56         scanid_string = None
 57         if type(scanid) is list:
 58             for item in scanid:
 59                 scanid_string += str(item)+,
 60             scanid_string = scanid_string[0:-1]
 61             parameters = {"resource":scanid_string,"apikey":self.apikey}
 62             try:
 63                 data = urllib.urlencode(parameters)
 64                 check_request = urllib2.Request(url,data)  
 65                 response = urllib2.urlopen(check_request)  
 66                 result_json = response.read()
 67             except Exception,ex:
 68                 ##log.log(ex,3,2)
 69                 return (-1,ex)
 70             return result_json
 71         parameters = {"resource":scanid,"apikey":self.apikey}
 72         try:
 73             data = urllib.urlencode(parameters)  
 74             check_request = urllib2.Request(url,data)  
 75             response = urllib2.urlopen(check_request)  
 76             result_json = response.read()
 77         except Exception,ex:
 78             #log.log(ex,3,2)
 79             return (-1,ex)
 80         return result_json
 81     
 82     def quick_check(self,check_file):
 83         file_md5 = None
 84         print str(check_file)
 85         with open(str(check_file),rb) as f:
 86             file_md5 = hashlib.md5()
 87             file_md5.update(f.read())
 88             file_md5 = file_md5.hexdigest()
 89         ret = self.upload_one_check_file(check_file)
 90         if ret.find(Error 400) >= 0:
 91             ret = self.check_file_rescan(file_md5)
 92         ret = simplejson.loads(ret)
 93         return ret["sha256"]
 94 
 95     def get_report(self,scanid):
 96         url = "https://www.virustotal.com/vtapi/v2/file/report"  
 97         parameters = {"resource":scanid,"apikey":self.apikey}
 98         try:
 99             data = urllib.urlencode(parameters)  
100             report_requset = urllib2.Request(url,data)  
101             response = urllib2.urlopen(report_requset)  
102             result_json = response.read()
103         except Exception,ex:
104             #log.log(ex,3,2)
105             return (-1,ex)
106         return result_json
107 
108     def get_report_from_designated_company(self,company,scanid):
109         url = "https://www.virustotal.com/vtapi/v2/file/report"  
110         parameters = {"resource":scanid,"apikey":self.apikey}
111         try:
112             data = urllib.urlencode(parameters)  
113             report_request = urllib2.Request(url,data)  
114             response = urllib2.urlopen(report_request)  
115             result_json = response.read()    
116             response_dict = simplejson.loads(result_json)
117         except Exception,ex:
118             #log.log(ex,3,2)
119             return (-1,ex)
120         return response_dict.get("scans",{}).get(company,{}).get("result")
121         
122     def url_check(self,check_url):
123         url = "https://www.virustotal.com/vtapi/v2/url/scan"
124         check_urls = None
125         if type(check_url) is list:
126             for item in check_url:
127                 check_urls += str(item)+\\n
128             check_urls = check_urls[0:-1]
129             parameters = {"url":check_urls,"apikey":self.apikey} 
130             try:
131                 data = urllib.urlencode(parameters)  
132                 url_check_request = urllib2.Request(url,data)  
133                 response = urllib2.urlopen(url_check_request)  
134                 result_json = response.read() 
135             except Exception,ex:
136                 #log.log(ex,3,2)
137                 return (-1,ex)
138             return result_json
139         check_urls = str(check_url)
140         parameters = {"url":check_urls,"apikey":self.apikey}  
141         try:
142             data = urllib.urlencode(parameters)  
143             url_check_request = urllib2.Request(url,data)  
144             response = urllib2.urlopen(url_check_request)  
145             result_json = response.read()  
146         except Exception,ex:
147             #log.log(ex,3,2)
148             return (-1,ex)
149         return result_json  
150         
151     def get_url_report(self,check_url):
152         url = "https://www.virustotal.com/vtapi/v2/url/report"
153         check_urls = None
154         if type(check_url) is list:
155             for item in check_url:
156                 check_urls += str(item)+,
157             check_urls = check_urls[0:-1]
158             parameters = {"resource": "http://www.sohu.com","apikey":self.apikey,"scan":"1"}  
159             try:
160                 data = urllib.urlencode(parameters)  
161                 url_check_request = urllib2.Request(url,data)  
162                 response = urllib2.urlopen(url_check_request)  
163                 result_json = response.read()
164             except Exception,ex:
165                 #log.log(ex,3,2)
166                 return (-1,ex)
167             return result_json
168         check_urls = str(check_url)
169         parameters = {"resource":check_urls,"apikey":self.apikey}  
170         try:
171             data = urllib.urlencode(parameters)  
172             url_check_request = urllib2.Request(url,data)  
173             response = urllib2.urlopen(url_check_request)  
174             result_json = response.read()
175         except Exception,ex:
176             #log.log(ex,3,2)
177             return (-1,ex)
178         return result_json
179 
180     def get_url_report_from_designated_company(self,check_url,company):
181         url = "https://www.virustotal.com/vtapi/v2/url/report"
182         check_urls = str(check_url)
183         parameters = {"resource":check_urls,"apikey":self.apikey}  
184         try:
185             data = urllib.urlencode(parameters)  
186             url_check_request = urllib2.Request(url,data)  
187             response = urllib2.urlopen(url_check_request)  
188             result_json = response.read()
189         except Exception,ex:
190             #log.log(ex,3,2)
191             return (-1,ex)
192         response_dict = simplejson.loads(result_json)  
193         return response_dict.get(scans,{}).get(company).get(result)
194     
195     def ip_check(self,ip):
196         url = https://www.virustotal.com/vtapi/v2/ip-address/report  
197         parameters = {ip:ip,apikey:self.apikey}  
198         try:
199             response = urllib.urlopen(%s?%s%(url,urllib.urlencode(parameters))).read()  
200             response_dict = json.loads(response)
201         except Exception,ex:
202             #log.log(ex,3,2)
203             return (-1,ex)
204         return response_dict 
205         
206     def domain_check(self,domain):
207         url = https://www.virustotal.com/vtapi/v2/domain/report  
208         parameters = {domain:domain,apikey:self.apikey}
209         try:
210             response = urllib.urlopen(%s?%s%(url,urllib.urlencode(parameters))).read()  
211             response_dict = json.loads(response)  
212         except Exception,ex:
213             #log.log(ex,3,2)
214             return (-1,ex)
215         return  response_dict 
216 
217 
218 #快速使用函数
219 def vtocq():
220     global APIKEY
221     global MYVTOBJ
222     global CRONTOL_BIT
223     if CRONTOL_BIT != 0:
224         return (-2,ERROR)
225     if APIKEY != None:
226         MYVTOBJ = VirusTotal(APIKEY)
227     else:
228         return (-1,APIKEY information set error!)
229     CRONTOL_BIT = 1
230     return MYVTOBJ
231     
232 def fcq(file_check,hash_sha1):
233     global MYVTOBJ
234     ret = MYVTOBJ.quick_check(file_check)
235     ret = MYVTOBJ.get_report(hash_sha1) 
236     ret = simplejson.loads(ret)
237     vtnumber = ret[positives]
238     av_macfee = ret[scans][McAfee][result]
239     av_bkav = ret[scans][Bkav][result]
240     av_360 = ret[scans][Qihoo-360][result]
241     ret = { 
242         "vtnumber":vtnumber,
243         "av_360":av_360,
244         "av_bkav":av_bkav,
245         "av_macfee":av_macfee
246     }
247     return ret
248     
249 def vt_check(filecheck,hash_sha1):
250     vtocq()
251     ret = fcq(filecheck,hash_sha1)
252     print ret
253     return ret
254     
255 #vt_check(‘C://PuTTY//plink.exe‘)
256 MYVTOBJ = VirusTotal(APIKEY)
257 print MYVTOBJ.domain_check("lx.com")

三、其他工具:

1、站长之家--站长工具:做一些域名、IP、注册邮箱等信息的关联查询。

2、www.ipip.net:做一些IP地理信息查询。

以上是关于谁推荐个好的C++编辑器?的主要内容,如果未能解决你的问题,请参考以下文章

推荐 15 款编程游戏,从此谁都可以学编程!

推荐 15 款编程游戏,从此谁都可以学编程!

前端开发有什么好的 IDE 推荐一下

IT行业接私单得有个好工具

敲代码速度甩同学几条街?!IDE推荐

有哪些好用的代码编辑器值得推荐?