我想知道以下代码是否相同:
//first
string str; int num;
stringstream(str)>>num;
//second
string str; int num;
(stringstream)str>>num;
我试图运行它们并且它们工作。你能告诉我这就是他们之间的区别吗?或者他们是一样的?非常感谢!!!
我想知道以下代码是否相同:
//first
string str; int num;
stringstream(str)>>num;
//second
string str; int num;
(stringstream)str>>num;
我试图运行它们并且它们工作。你能告诉我这就是他们之间的区别吗?或者他们是一样的?非常感谢!!!
正如Luchian Grigore已经告诉你的那样,它们是等价的。
第一个将使用stringstream::stringstream(const string&)
构造函数创建一个临时对象。第二种是 C 风格的类型转换,本质上与static_cast<stringstream>(str) >> num;
. 将static_cast<>
使用上面的构造函数,所以两者是等价的。
然而,正如 Luchian 已经告诉你的,你不应该使用 C 风格的类型转换。改为使用static_cast<>
。
也可以看看: