首页 > 解决方案 > 这一行发生了什么: istringstream is( line );

问题描述

正在阅读此解决方案:

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

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

而且我不明白这条线在做什么:

istringstream is( line );

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

是否这样做:

istringstream is = new istringstream(line);

?

标签: c++

解决方案


istringstream is( line );

是一个自动分配istringstream命名的定义,is其内容初始化为line.

istringstream is = new istringstream(line);

不会编译。new动态分配和构造一个新对象并返回一个指向它的指针。您只能将指针分配给指针。你可以

istringstream * is = new istringstream(line);

并创建is一个指向 的指针istringstream,但现在您必须处理管理动态分配。确保你

delete is;

当您不再需要它时。

也就是说,更喜欢自动分配并给出为什么 C++ 程序员应该尽量减少“新”的使用?在走动态路线之前阅读。


推荐阅读