我总是想知道,从来没有找到令人满意的解释为什么会
std::string str = 50;
cout << str
给你垃圾或不编译
和
std::ostringstream str << 50;
cout << str // or str.str()
作品。
什么是继承限制阻止std :: string从整数和整数类型实现转换运算符?
答案 0 :(得分:2)
我想在写这个问题时有一个错误,第一个案例是:
std::string str;
str = 50;
由于某些原因让我感到厌烦,标准确实有一个赋值运算符,它允许将单个char
赋值给std::string
,这样就会创建一个空字符串,并设置它值包含一个数字值为50的单个字符。
答案 1 :(得分:0)
std::string str = 50;
这不应该编译。 basic_string
没有来自单个int
的构造函数。您的实施有缺陷。 basic_string
不执行任何其他类型的字符串转换 - 它只处理字符串。
std::ostringstream str << 50;
执行从50到“50”的转换,然后输出。 stringstream
旨在将其他类型转换为文字。
答案 2 :(得分:-1)
有几种方法可以将整数转换为字符串 但你提到的方式是错误的。
看下面的, C ++ / STL:
ostringstream
to_string
C:
sprintf