小编ani*_*ita的帖子

当用于构造字符串对象的布尔值时,会发生什么类型转换?

在我的代码中,有一个拼写错误:而不是"false"在初始化std::string对象时使用,我键入false(这是一个bool).现在这没有报告任何编译错误.但是后来在我的代码中,当使用这个字符串对象时,我std::logic_error在运行时得到了.任何人都可以解释,为什么在这种情况下允许构造(否则我会收到编译错误,并在那里发现问题)?

这是一个小片段 -

#include <iostream>

int main ()
{

   std::string str = false;

   std::cout << str << "\n";

}
Run Code Online (Sandbox Code Playgroud)

运行时我得到的o/p -

xhdrdevl8@~/MYBACKUP=>g++ -o test_string -g test_string.cxx

xhdrdevl8@~/MYBACKUP=>./test_string

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct NULL not valid
Aborted
Run Code Online (Sandbox Code Playgroud)

c++ string constructor type-conversion

5
推荐指数
1
解决办法
2363
查看次数

标签 统计

c++ ×1

constructor ×1

string ×1

type-conversion ×1