[cpp] 关于STL中string的问题

Wu Yongwei adah at sh163.net
Thu Mar 2 22:11:43 CST 2006


苏益ꪏ wrote:

> 请先看这段代码。
> ----------------------------------------------------------------
> //我希望把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);
> ----------------------------------------------------------------

C++里的正规做法是使用stringstream(#include <sstream>):

	std::ostringstream oss;
	oss << 10;
	MessageBox(NULL, oss.str().c_str(), NULL, MB_OK);

呵呵,Chen Shuo,不好意思,我觉得这又是一个显示iostreams优于printf的例子。

吴咏炜


More information about the Cpp mailing list