字符串在C++中初始化为NULL

use*_*792 3 c++ string null

string a=NULL;
Run Code Online (Sandbox Code Playgroud)

它给出了错误.为什么以及如何将字符串初始化为NULL?

但是当我写作

string a="foo";
Run Code Online (Sandbox Code Playgroud)

这很好用.

Tim*_*sch 11

实际上要得到一个空的std::string,你只需写

std::string a;
Run Code Online (Sandbox Code Playgroud)

std::string默认构造函数将为您提供一个空字符串,而无需进一步提示.

顺便说一句,通常不鼓励在C++中使用NULL,建议使用0(无论如何都要定义NULL),或者如果你有足够现代的编译器,nullptr.

  • @Zoidberg' - :不,我会说`foo(int)`因为我*知道'NULL`是纯零的.但是,如果我犯了错误,后来有人注意到错误的重载被调用,他可以立即理解我的意思并添加相关的演员(否则他将不得不问我是否意味着"整数零"或"指针零") .我同意`NULL`是一个botch - 由于某种原因引入了`nullptr`,但我觉得它比使用0也更好用于指针.无论如何,所有这一切都与问题无关(我很抱歉让它脱轨)和一般不相关的现在`nullptr`解决了这个问题. (2认同)