我想知道以下代码是否相同:
//first
string str; int num;
stringstream(str)>>num;
//second
string str; int num;
(stringstream)str>>num;
我试图运行它们并且它们有效。你能告诉我他们之间的区别吗?或者他们是一样的?非常感谢!!!
答案 0 :(得分:4)
正如Luchian Grigore已经告诉过你他们是等同的。
第一个将使用stringstream::stringstream(const string&)
构造函数创建临时对象。第二个是C风格的类型转换,它与static_cast<stringstream>(str) >> num;
基本相同。 static_cast<>
将使用上面的构造函数,因此两者都是等价的。
但是,正如Luchian已经告诉过你的那样,你不应该使用C风格的类型转换。请改用static_cast<>
。
另见: