您好我想学习一种在c ++中初始化emtpy字符串的专业方法。
我能做到
std::string a_string; // way_1
或
std::string a_string = ""; // way_2
但我认为way_1
完全取决于std
包中定义的默认值。对我来说,它不是一个明确的声明,如果将来更改std :: string的代码,可能需要更改它。 way_2
对我而言不是直接使用""
,而是等同于空字符串。对我来说,内置的空字符串是专业的,如nullptr
用于初始化指针。
你知道C ++专业程序员如何初始化一个空字符串?
由于
答案 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 。