terminate called after throwing an instance of 'stdz::logic_error'

| 2012年12月4日

程序编译没有问题,突然在测试的时候出了这样的问题。

terminate called after throwing an instance of ‘std::logic_error’ what(): basic_string::_S_construct NULL not valid

这个问题在我这里是因为调用了getenv,但是在测试的是后getenv的返回值是一个空值,而我没有检查就直接给string赋值。

就造成了c++中string构造的失败。

所以在写法上要注意对这种string空构造的失败。下面的方法可以避免string的空构造。

const char* query_string = getenv("QUERY_STRING");

std::string q_string = query_string ? query_string : "";
看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务