我是.NET开发人员,之前曾使用过VB6。我已经非常熟悉这些环境,并且在垃圾收集语言的环境中工作。但是,我现在希望用本机C ++来增强我的技能,并发现自己有点不知所措。具有讽刺意味的是,这并不是我想象的通常是初学者的绊脚石,因为我觉得我已经很好地掌握了指针和内存管理。对我来说有点混乱的事情更多的是:
List<T>
,我在C ++中使用的是什么,它可以同时工作?)这几乎感觉就像你使用的IDE,指南是不同的,所以我真的在寻找一些可能更普遍的东西。或者最糟糕的是,专注于使用Microsoft的编译器/ IDE。另外,为了清楚起见,我不是在寻找有关通用编程实践(设计模式,代码完成等)的任何内容,因为我觉得我非常精通这些主题。
答案 0 :(得分:194)
答案 1 :(得分:3)
你有一些工具包可用。例如,STL(标准模板库)和Boost / TR1(STL的扩展)被认为是行业标准(至少,STL是)。它们提供列表,映射,集合,共享指针,字符串,流和各种其他方便工具。最重要的是,它们得到了编译器的广泛支持。
对于数据转换,您可以进行强制转换或创建显式转换器函数。
库 - 您可以创建静态库(被最终可执行文件吸收)或DLL(您已经熟悉这些库)。 MSDN是DLL的一个很棒的资源。静态库取决于您的构建环境。
一般来说,这是我的建议: - 很好地了解您的IDE选择 - 购买Herbert Schildt撰写的“C ++完整参考书”,我认为C ++(包括STL)是一本优秀的书籍
考虑到你的背景,一旦你完成这两项工作,你应该做好准备。
答案 2 :(得分:3)
我不会重复其他人对图书馆等所说的话,但是如果你对C ++很认真,那么请帮个忙,选择Bjarne Stroustrup的“C ++编程语言”。
我花了很多年的时间用C ++来最终拿起一份副本,一旦我做了,我花了一个下午拍打我的额头说“当然!我应该意识到了!等等。”
(具有讽刺意味的是,我与K&amp; R的“C编程语言”完全相同。有一天,我将学会在第1天获得“The Book”。)
答案 3 :(得分:2)
我wrote small cheat sheet对于这样的程序员。您也可能对更复杂的案例感兴趣,例如as varargs
答案 4 :(得分:1)
如果包含源代码,引用和使用其他库只需将#include库的头文件包含到您需要的任何.cpp文件中(然后编译库的源代码)项目)。但是,大多数情况下,您可能正在使用.lib(静态库)或.dll(动态库)。大多数(所有?)DLL都带有.lib文件,因此两种类型的过程是相同的:在您需要的地方包含相应的头文件,然后在链接步骤中添加相关的.lib文件(在visual studio中,我认为你可以只将文件添加到项目中。
自从我为其他人创建自己的库以来,已经有很长一段时间了,所以我会让其他人回答这个问题。或者我明天回来编辑这个答案,因为我明天要为工作创建一个.lib:)
字符串内容通常使用std :: string来完成。在特殊情况下,您也可以使用旧的C风格的sprintf()函数,但通常不鼓励这样做。
就您正在寻找的数据结构而言,请查看STL(标准模板库)。它包括您应该熟悉的列表,矢量,地图,字符串等。 我不确定你的类型转换是什么意思...我假设你知道关于转换,所以你必须指的是比这更复杂的东西,在这种情况下它可能特定于你试图转换的类型。也许其他人可以提供更多信息。
答案 5 :(得分:1)
响应“引用/使用其他库”
有关在Windows和Linux中使用C / C ++显式加载DLL的信息包括......
<强>窗:强>
功能: LoadLibrary,GetProcAddress,FreeLibrary
<强> Linux的:强>
功能: dlopen,dlsym,dlerror,dlclose