在从stdin输入之前,我是否必须在std :: string之前初始化?

时间:2018-02-11 13:44:43

标签: c++ input initialization

我需要在C ++中声明一个新的ModelName::today()->get(); ModelName::yesterday()->get(); 变量,然后从标准输入中读取它。我必须先将其初始化还是不必要的步骤?换句话说,哪个代码更好:1)或2)? (或者它们是一样的吗?)

1)

string

2)

string s = ""; 
cin >> s;

1 个答案:

答案 0 :(得分:4)

std::string而言,它并不重要。由于std::string的默认构造函数使用空字符串初始化它:

  

默认构造函数。构造空字符串(零大小和未指定的容量)。 (Source

两条线在行为方面基本上做同样的事情。你选择1还是2并不重要,但我会说如果默认构造函数做同样的事情,那么赋值就过时了。

如果你有某种整数类型,没有默认构造函数的东西,那么大多数人仍然保持未初始化,因为之后正在输入。但是,我发现用默认值初始化这些变量会更好,因为这会处理由于某种原因输入失败的情况(无效类型,错流状态等)。