此行中发生了什么:istringstream is(line);

时间:2019-02-17 05:41:38

标签: c++

正在阅读此解决方案:

https://stackoverflow.com/a/42654357/8408220

(问题“如何读取整数直到行尾?”)

我不知道这行在做什么:

istringstream is( line );

我知道istringstream是一个类,但是“是”部分是什么?

正在这样做吗?

istringstream is = new istringstream(line);

1 个答案:

答案 0 :(得分:6)

printf

是名为istringstream is( line ); 的自动分配的istringstream的定义,并用is的内容初始化。

line

将无法编译。 istringstream is = new istringstream(line); 动态分配并构造一个新对象,并返回指向它的指针。您只能将一个指针分配给一个指针。您可以

new

,并使istringstream * is = new istringstream(line); 指向is的指针,但是现在您必须处理动态分配的管理。确保您

istringstream

当您不再需要它时。

也就是说,更喜欢自动分配,并在进行动态路由之前先给Why should C++ programmers minimize use of 'new'?读一读。