在c ++中初始化空字符串的专业方法

时间:2017-12-21 09:33:10

标签: string c++14

您好我想学习一种在c ++中初始化emtpy字符串的专业方法。

我能做到

std::string a_string;  // way_1

std::string a_string = "";  // way_2

但我认为way_1完全取决于std包中定义的默认值。对我来说,它不是一个明确的声明,如果将来更改std :: string的代码,可能需要更改它。 way_2对我而言不是直接使用"",而是等同于空字符串。对我来说,内置的空字符串是专业的,如nullptr用于初始化指针。

你知道C ++专业程序员如何初始化一个空字符串?

由于

1 个答案:

答案 0 :(得分:5)

  

但我认为std完全取决于std::string包中定义的默认值。对我来说,这不是一个明确的声明,如果将来std::string的代码发生变化,可能需要更改。

这是错误的推理。 std::string的默认值由C ++标准定义,并且与语言的其他部分一样稳定。如果你担心它会发生变化,那么你也应该担心""完全消失,或std::string改变的意思,或者空字符串改变的初始化意义。

如果你想要“专业”,那么我,如果我看到程序员使用显式表单,会想知道这个程序员是否不知道像@DatabaseTable(tableName = "chapters") public class Chapter implements Serializable{ private static final long serialVersionUID = 3500051084584514827L; @DatabaseField(generatedId = true) private int _id; @DatabaseField(canBeNull = false) private String name; @DatabaseField(canBeNull = false, foreign = true) private Project project; @ForeignCollectionField(eager = true, maxEagerForeignCollectionLevel = 2) public ForeignCollection<Document> documents; @ForeignCollectionField public ForeignCollection<Chapter> subChapters; public int getId() { return _id; } public String getName() { return name; } public Project getProject() { return project; } Chapter() { } public Chapter(String name, Project project) { this.name = name; this.project = project; } } 这样的基本类型的默认初始化是什么,以及这个程序员可能不知道的 else