【问题标题】:Professional way to initialize an empty string in c++在 C++ 中初始化空字符串的专业方法
【发布时间】:2017-12-21 09:33:10
【问题描述】:

您好,我想学习一种专业的方法来用 c++ 初始化一个空字符串。

我可以的

std::string a_string;  // way_1

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

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

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

谢谢

【问题讨论】:

  • 看看这篇关于空字符串的有趣帖子:survex.com/~olly/blog/coding/empty-strings-in-c%2B%2B.html
  • 没有“标准包”之类的东西。字符串类是语言标准中定义的标准库的一部分。字符串的默认值在语言标准中定义。如果您不信任该标准,请不要使用该语言。
  • 如果我想为空字符串提供显式初始化器,我会使用{}std::string a_string{};std::string a_string = {};auto a_string = std::string{};

标签: string c++14


【解决方案1】:

但我认为way_1 完全取决于std 包中定义的默认值。对我来说,这不是一个显式的声明,如果std::string的代码以后改了,可能需要改。

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

如果您要“专业”,那么如果我看到一个程序员使用显式形式,我会想知道这个程序员是否不知道std::string这样的基本类型的默认初始化是做什么的,并且因此其他这个程序员可能不知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多