0

我想知道以下代码是否相同:

//first
string str; int num;
stringstream(str)>>num;
//second
string str; int num;
(stringstream)str>>num;

我试图运行它们并且它们工作。你能告诉我这就是他们之间的区别吗?或者他们是一样的?非常感谢!!!

4

1 回答 1

4

正如Luchian Grigore已经告诉你的那样,它们是等价的。

第一个将使用stringstream::stringstream(const string&)构造函数创建一个临时对象。第二种是 C 风格的类型转换,本质上与static_cast<stringstream>(str) >> num;. 将static_cast<>使用上面的构造函数,所以两者是等价的。

然而,正如 Luchian 已经告诉你的,你不应该使用 C 风格的类型转换。改为使用static_cast<>

也可以看看:

于 2012-05-28T21:34:49.740 回答