如何检查是否设置了std :: string?

nak*_*iya 63 c++

如果使用a char*,我可以将其初始化为NULL,然后通过进行比较来检查它是否已设置.怎么做同样的事情std::string?如何检查字符串是否设置?

编辑:如果我设置的字符串也是空的怎么办?我是否必须使用额外的标志来检查是否std::string设置了?

GMa*_*ckG 106

用途empty():

std::string s;

if (s.empty())
    // nothing in s
Run Code Online (Sandbox Code Playgroud)

  • 如果字符串是"""`会发生什么 (4认同)
  • @nakiya:那是空的.`std :: string`不是指针,你不能为它指定null. (3认同)

Mic*_*urr 24

正如几个答案所指出的那样,std::string它的价值没有"零度"的概念.如果使用空字符串这样的值不够好(即,你需要区分没有字符的字符串和没有值的字符串),你可以使用a std::string*并将其设置为NULL或者a std::string适当的有效实例.

您可能希望使用某种智能指针类型(boost :: scoped_ptr或其他)来帮助管理std::string您设置指针的任何对象的生命周期.

  • 你也可以使用`boost :: optional <std :: string>`.模板`boost :: optional <T>`的存在正是为了支持那些自然没有它的类型的"null-ness". (4认同)

Jam*_*lis 17

你不能; 至少与测试指针是否相同的方式不同NULL.

std::string对象总是初始化,并始终包含一个字符串; 默认情况下,其内容为空字符串("").

您可以测试空虚(使用s.size() == 0s.empty()).


Emp*_*ian 5

没有“未设置”状态std::string,它总是被设置为某些东西。