2009-12-05 56 views

回答

6

使用宽版本的stringstream和'< <'运算符。应该定义正确的操作员为您执行转换。

如果我在这里错过了一些微妙的东西,你可以依靠提升和使用this

我仍然是安全版本的sprintf的粉丝,所以是Herb Sutter:D。

+0

+1为好的答案。 – 2009-12-05 17:12:38

+0

stringstreambuffer?你能举个例子吗? – Mark 2009-12-05 17:56:26

+1

对不起,它实际上叫做stringstream。它像std :: cout一样工作。您可以将数据输入到它中 - 比如cout,最后您可以从字符串流中检索一个字符串。你可以从www.cplusplus.com找到一个参考。如果这没有帮助,我会发布一个更详细的例子,请告知。 – 2009-12-06 04:50:28

3

如果您使用的是Windows,你可以随时使用wsprintf即

wsprintf(newStr, L"%s%d", oldStr, yourInt); 

我敢肯定会有一些等同于非Windows ...

+0

我已经使用,作为一个答案,+建议sprintf之前托管对象不好,当标签暗示C++和新手。另外,您还没有选择该功能的安全版本,(-1)出于这个原因。 - – 2009-12-05 17:24:21

+4

Pah ...现在使用C++解决方案来解决C++问题是错误的。许多C++程序员担心这样糟糕的代码的原因有一半是仅仅使用OO构造。面向对象是一个有用的工具,但不是所有和结束所有...带来DOWNVOTES>:D – Goz 2009-12-05 17:34:10

+0

因此,这使得一个全新的字符串?它是特定于某种类型的字符串吗? – Mark 2009-12-05 18:28:02

0

如何提升lexical_cast的<>

std::wstring data; 

data += boost::lexical_cast<std::wstring>(53); 
data.c_str() // This is wchar_t* 
+0

已经给出了答案。 – 2009-12-05 17:40:57