Re: [cpp] 关于STL中string的问题

朱小莹 zhu-xy at neusoft.com
Thu Mar 2 15:33:38 CST 2006


这么定义:
string Buffer(256, '\0');
或者
string Buffer;
Buffer.reserve(256);
  ----- Original Message ----- 
  From: 苏益ꪏ 
  To: cpp at codingnow.com 
  Sent: Thursday, March 02, 2006 2:54 PM
  Subject: [cpp] 关于STL中string的问题


  请先看这段代码。
  ----------------------------------------------------------------
  //我希望把string赋值10,然后显示
  string Buffer;
  sprintf( Buffer.begin(),"%d",10);
  MessageBox(NULL,Buffer.begin(),NULL,MB_OK);
  ----------------------------------------------------------------

  建个程序,编译它,是通不过的。原因是Buffer没有初值,调用Buffer.begin()返回是NULL,第三句用MessageBox弹出一个NULL的字符串,这是不可取的。

  所以我改正以后,程序为
  ---------------------------------------------------------------
  //改正后的程序
  string Buffer = "a"; //我随便给了个初值
  sprintf( Buffer.begin(),"%d",10);
  MessageBox(NULL,Buffer.begin(),NULL,MB_OK);
  ----------------------------------------------------------------
  但是,上面这段程序,可读性能差。别人会想:作者为什么给个"a"而不是"b"呢?

  所以我想请教大家:
  (1)这问题有没有更好的方法?最好不要MFC,也不用char数组,因为整个程序中其它地方我都用了string。
  (2)STL为什么这么设计?
  难道定义Buffer以后,还没有分配空间?如果已经有空间,为什么不用Begin()返回首个字符的地址?这样做意义呵在?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060302/6b3163ba/attachment.html


More information about the Cpp mailing list