[cpp] 关于STL中string的问题

苏益ꪏ sdyredwolf at tom.com
Thu Mar 2 14:54:08 CST 2006


请先看这段代码。
----------------------------------------------------------------
//我希望把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/ac13df76/attachment.html


More information about the Cpp mailing list