terminate called after throwing an instance of ‘stdz::logic_error’

程序编译没有问题,突然在测试的时候出了这样的问题。
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 : “”;

Leave a Reply

Your email address will not be published. Required fields are marked *