• 您的位置我爱Aspx >> VC.Net >> Effective STL:Item 16:如何将vector和string的数据传给传统的API函数
  • Effective STL:Item 16:如何将vector和string的数据传给传统的API函数

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:48:08  关键字:数据
  • Effective STL:Item 16:如何将vector和string的数据传给传统的API函数

    ss=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>

    Item 16:如何将vector和string的数据传给传统的API函数

    因为 C++语言已经于1998年被标准化,C++的中坚分子在试图推动程序员从数组转到vector时就没什么顾虑了。同样的情况也发生于从char *指针转到string对象的过程中。有很好的理由来做这些转变,比如可以消除常见的编程错误(Item 13),和有机会获得STL泛型算法的全部强大能力 (参见,比如,Item 31)。

    但是,麻烦还是有的,而最常见的一个就是已经存在的传统C风格API函数接受的是数组和char *指针,而不是vector和string对象。这样的API函数还将会存在很长时间,如果我们要高效使用STL的话,就必须和它们和平共处。

    幸运的是,这很容易。如果你有一个vector对象v,而你需要得到一个指向v中数据的指针,以使得它可以被当作一个数组,只要使用&v[0]就可以了。对于string对象s,相应的语法是很简单的s.c_str()。但只能从上面读。如广告时常指明的,有几个限制。。

    给定一个

    vector<int> v;

    表达式v[0]生产一个指向vector中首元素的引用,所以,&v[0]是指向那个首元素的指针。vector中的元素被C++标准限定为存储在连续内存中,就象是一个数组,所以,如果我们传递v给如此形式的C风格API函数

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:深度解析MFC线程及机制
    下一篇:用户文档