-2

我一直想知道并且从未找到令人满意的解释来解释为什么会

std::string str = 50;
cout << str

给你垃圾或不编译

std::ostringstream str << 50;
cout << str // or str.str()

作品。

阻止 std::string 从整数和类整数类型实现转换运算符的继承限制是什么?

4

3 回答 3

2

我想写这个问题有错误,第一种情况是:

std::string str;
str = 50;

出于某种让我无法理解的原因,该标准确实有一个赋值运算符,允许将单个赋值char给 a std::string,因此这将创建一个空字符串,并将其值设置为包含数值为 50 的单个字符。

于 2013-07-12T20:33:06.267 回答
0
std::string str = 50;

这不应该编译。basic_string没有来自单个的构造函数int。您的实施有缺陷。basic_string不执行从任何其他类型到字符串的任何转换——它只处理字符串。

std::ostringstream str << 50;

这执行从 50 到“50”的转换,然后输出。stringstream 旨在从其他类型转换为文本。

于 2013-07-12T20:23:45.203 回答
-1

有几种方法可以将整数转换为字符串,但你提到的方式是错误的。

看下面,C++/STL:

ostringstream
to_string

C:

sprintf
于 2013-07-12T20:20:44.233 回答